git.iko.soy/typeable/pandoc
on master help sign in
RST reader: handle blank lines correctly in line blocks (#3881)
05bb8efAlexander
src/Text/Pandoc/Parsing.hs+1−1
@@ -838,7 +838,7 @@ blankLineBlockLine = try (char '|' >> blankline)
838lineBlockLines :: Monad m => ParserT [Char] st m [String]
838lineBlockLines :: Monad m => ParserT [Char] st m [String]
839lineBlockLines = try $ do
839lineBlockLines = try $ do
840 lines' <- many1 (lineBlockLine <|> ((:[]) <$> blankLineBlockLine))
840 lines' <- many1 (lineBlockLine <|> ((:[]) <$> blankLineBlockLine))
841− skipMany1 $ blankline <|> blankLineBlockLine
841+ skipMany $ blankline
842 return lines'
842 return lines'
843
843
844-- | Parse a table using 'headerParser', 'rowParser',
844-- | Parse a table using 'headerParser', 'rowParser',
test/Tests/Readers/RST.hs+13
@@ -136,6 +136,19 @@ tests = [ "line block with blank line" =:
136 para "but must stop here")
136 para "but must stop here")
137 , "line block with 3 lines" =: "| a\n| b\n| c"
137 , "line block with 3 lines" =: "| a\n| b\n| c"
138 =?> lineBlock ["a", "b", "c"]
138 =?> lineBlock ["a", "b", "c"]
139+ , "line blocks with blank lines" =: T.unlines
140+ [ "|"
141+ , ""
142+ , "|"
143+ , "| a"
144+ , "| b"
145+ , "|"
146+ , ""
147+ , "|"
148+ ] =?>
149+ lineBlock [""] <>
150+ lineBlock ["", "a", "b", ""] <>
151+ lineBlock [""]
139 , "quoted literal block using >" =: "::\n\n> quoted\n> block\n\nOrdinary paragraph"
152 , "quoted literal block using >" =: "::\n\n> quoted\n> block\n\nOrdinary paragraph"
140 =?> codeBlock "> quoted\n> block" <> para "Ordinary paragraph"
153 =?> codeBlock "> quoted\n> block" <> para "Ordinary paragraph"
141 , "quoted literal block using | (not a line block)" =: "::\n\n| quoted\n| block\n\nOrdinary paragraph"
154 , "quoted literal block using | (not a line block)" =: "::\n\n| quoted\n| block\n\nOrdinary paragraph"