aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlexander <ilabdsf@gmail.com>2017-08-28 17:48:46 +0300
committerJohn MacFarlane <jgm@berkeley.edu>2017-08-28 07:48:46 -0700
commit05bb8ef4aa6faa6a4da3c54a0483d42b846733ca (patch)
tree6b2a5d75a76b0f92818c9d6b29fef8f198c98f76
parent8fcf66453cc4f9d1cf9413aa466477e56290d733 (diff)
downloadpandoc-05bb8ef4aa6faa6a4da3c54a0483d42b846733ca.tar.gz
RST reader: handle blank lines correctly in line blocks (#3881)
Previously pandoc would sometimes combine two line blocks separated by blanks, and ignore trailing blank lines within the line block. Test is checked to be consisted with http://rst.ninjs.org/
-rw-r--r--src/Text/Pandoc/Parsing.hs2
-rw-r--r--test/Tests/Readers/RST.hs13
2 files changed, 14 insertions, 1 deletions
diff --git a/src/Text/Pandoc/Parsing.hs b/src/Text/Pandoc/Parsing.hs
index 9ed18d4e0..2543f11f0 100644
--- a/src/Text/Pandoc/Parsing.hs
+++ b/src/Text/Pandoc/Parsing.hs
@@ -838,7 +838,7 @@ blankLineBlockLine = try (char '|' >> blankline)
lineBlockLines :: Monad m => ParserT [Char] st m [String]
lineBlockLines = try $ do
lines' <- many1 (lineBlockLine <|> ((:[]) <$> blankLineBlockLine))
- skipMany1 $ blankline <|> blankLineBlockLine
+ skipMany $ blankline
return lines'
-- | Parse a table using 'headerParser', 'rowParser',
diff --git a/test/Tests/Readers/RST.hs b/test/Tests/Readers/RST.hs
index 61a2673f5..928fc1a99 100644
--- a/test/Tests/Readers/RST.hs
+++ b/test/Tests/Readers/RST.hs
@@ -136,6 +136,19 @@ tests = [ "line block with blank line" =:
para "but must stop here")
, "line block with 3 lines" =: "| a\n| b\n| c"
=?> lineBlock ["a", "b", "c"]
+ , "line blocks with blank lines" =: T.unlines
+ [ "|"
+ , ""
+ , "|"
+ , "| a"
+ , "| b"
+ , "|"
+ , ""
+ , "|"
+ ] =?>
+ lineBlock [""] <>
+ lineBlock ["", "a", "b", ""] <>
+ lineBlock [""]
, "quoted literal block using >" =: "::\n\n> quoted\n> block\n\nOrdinary paragraph"
=?> codeBlock "> quoted\n> block" <> para "Ordinary paragraph"
, "quoted literal block using | (not a line block)" =: "::\n\n| quoted\n| block\n\nOrdinary paragraph"