summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlbert Krewinkel <albert@zeitkraut.de>2015-09-19 21:54:44 +0200
committerAlbert Krewinkel <albert@zeitkraut.de>2015-09-19 22:02:43 +0200
commit8007dd97b5d403f54c218a178573a818ab80c667 (patch)
treea4e51f6ab02950f634050802d86aabf068d4a613
parent4d49f76dbb8f51db5fd2527c3ef779996bf8936f (diff)
Make sure verse blocks can contain empty lines
The previous verse parsing code made the faulty assumption that empty strings are valid (and empty) inlines. This isn't the case, so lines are changed to contain at least a newline. It would generally be nicer and faster to keep the newlines while splitting the string. However, this would require more code, which seems unjustified for a simple (and fairly rare) block as *verse*. This fixes #2402.
-rw-r--r--src/Text/Pandoc/Readers/Org.hs2
-rw-r--r--tests/Tests/Readers/Org.hs9
2 files changed, 10 insertions, 1 deletions
diff --git a/src/Text/Pandoc/Readers/Org.hs b/src/Text/Pandoc/Readers/Org.hs
index 55ac92bcb..388a8f880 100644
--- a/src/Text/Pandoc/Readers/Org.hs
+++ b/src/Text/Pandoc/Readers/Org.hs
@@ -409,7 +409,7 @@ verseBlock blkProp = try $ do
ignHeaders
content <- rawBlockContent blkProp
fmap B.para . mconcat . intersperse (pure B.linebreak)
- <$> mapM (parseFromString parseInlines) (lines content)
+ <$> mapM (parseFromString parseInlines) (map (++ "\n") . lines $ content)
exportsCode :: [(String, String)] -> Bool
exportsCode attrs = not (("rundoc-exports", "none") `elem` attrs
diff --git a/tests/Tests/Readers/Org.hs b/tests/Tests/Readers/Org.hs
index 5eed2c9f4..52aaea52e 100644
--- a/tests/Tests/Readers/Org.hs
+++ b/tests/Tests/Readers/Org.hs
@@ -1143,6 +1143,15 @@ tests =
]
]
+ , "Verse block with newlines" =:
+ unlines [ "#+BEGIN_VERSE"
+ , "foo"
+ , ""
+ , "bar"
+ , "#+END_VERSE"
+ ] =?>
+ para ("foo" <> linebreak <> linebreak <> "bar")
+
, "LaTeX fragment" =:
unlines [ "\\begin{equation}"
, "X_i = \\begin{cases}"