@@ -35,6 +35,7 @@ import Text.Pandoc.Builder ( Inlines, Blocks, HasMeta(..),
3535 trimInlines )
3636import Text.Pandoc.Definition
3737import Text.Pandoc.Compat.Monoid ((<>))
38+import Text.Pandoc.Error
3839import Text.Pandoc.Options
3940import qualified Text.Pandoc.Parsing as P
4041import Text.Pandoc.Parsing hiding ( F, unF, askF, asksF, runF
@@ -57,8 +58,6 @@ import qualified Data.Set as Set
5758import Data.Maybe (fromMaybe, isJust)
5859import Network.HTTP (urlEncode)
5960
60−import Text.Pandoc.Error
61−
6261-- | Parse org-mode string and return a Pandoc document.
6362readOrg :: ReaderOptions -- ^ Reader options
6463 -> String -- ^ String to parse (assuming @'\n'@ line endings)
@@ -807,18 +806,19 @@ tableRows = try $ many (tableAlignRow <|> tableHline <|> tableContentRow)
807806
808807tableContentRow :: OrgParser OrgTableRow
809808tableContentRow = try $
810− OrgContentRow . sequence <$> (tableStart *> manyTill tableContentCell newline)
809+ OrgContentRow . sequence <$> (tableStart *> many1Till tableContentCell newline)
811810
812811tableContentCell :: OrgParser (F Blocks)
813812tableContentCell = try $
814− fmap B.plain . trimInlinesF . mconcat <$> many1Till inline endOfCell
815−
816−endOfCell :: OrgParser Char
817−endOfCell = try $ char '|' <|> lookAhead newline
813+ fmap B.plain . trimInlinesF . mconcat <$> manyTill inline endOfCell
818814
819815tableAlignRow :: OrgParser OrgTableRow
820−tableAlignRow = try $
821− OrgAlignRow <$> (tableStart *> manyTill tableAlignCell newline)
816+tableAlignRow = try $ do
817+ tableStart
818+ cells <- many1Till tableAlignCell newline
819+ -- Empty rows are regular (i.e. content) rows, not alignment rows.
820+ guard $ any (/= AlignDefault) cells
821+ return $ OrgAlignRow cells
822822
823823tableAlignCell :: OrgParser Alignment
824824tableAlignCell =
@@ -833,15 +833,19 @@ tableAlignCell =
833833 where emptyCell = try $ skipSpaces *> endOfCell
834834
835835tableAlignFromChar :: OrgParser Alignment
836−tableAlignFromChar = try $ choice [ char 'l' *> return AlignLeft
837− , char 'c' *> return AlignCenter
838− , char 'r' *> return AlignRight
839− ]
836+tableAlignFromChar = try $
837+ choice [ char 'l' *> return AlignLeft
838+ , char 'c' *> return AlignCenter
839+ , char 'r' *> return AlignRight
840+ ]
840841
841842tableHline :: OrgParser OrgTableRow
842843tableHline = try $
843844 OrgHlineRow <$ (tableStart *> char '-' *> anyLine)
844845
846+endOfCell :: OrgParser Char
847+endOfCell = try $ char '|' <|> lookAhead newline
848+
845849rowsToTable :: [OrgTableRow]
846850 -> F OrgTable
847851rowsToTable = foldM rowToContent emptyTable