aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJohn MacFarlane <jgm@berkeley.edu>2017-09-10 06:41:41 -0700
committerGitHub <noreply@github.com>2017-09-10 06:41:41 -0700
commit41a16a1e9dbfd62d430fb7c5a75b8c3e207d383f (patch)
tree79b2a7467b4648b2dfc64caa02d1c093290b12be
parentcbdeed9cfd027d2deede890a5a9177423178cea4 (diff)
parentafedb41b170cd9198ab589567f39e99717667a31 (diff)
downloadpandoc-41a16a1e9dbfd62d430fb7c5a75b8c3e207d383f.tar.gz
Merge pull request #3908 from labdsf/muse-reader-example
Muse reader: trim newlines from <example>s
-rw-r--r--src/Text/Pandoc/Readers/Muse.hs11
-rw-r--r--test/Tests/Readers/Muse.hs25
2 files changed, 35 insertions, 1 deletions
diff --git a/src/Text/Pandoc/Readers/Muse.hs b/src/Text/Pandoc/Readers/Muse.hs
index 3b089772f..f70085c54 100644
--- a/src/Text/Pandoc/Readers/Muse.hs
+++ b/src/Text/Pandoc/Readers/Muse.hs
@@ -223,7 +223,16 @@ header = try $ do
return $ B.headerWith attr level <$> content
exampleTag :: PandocMonad m => MuseParser m (F Blocks)
-exampleTag = liftM (return . uncurry B.codeBlockWith) $ htmlElement "example"
+exampleTag = do
+ (attr, contents) <- htmlElement "example"
+ return $ return $ B.codeBlockWith attr $ chop contents
+ where lchop s = case s of
+ '\n':ss -> ss
+ _ -> s
+ rchop = reverse . lchop . reverse
+ -- Trim up to one newline from the beginning and the end,
+ -- in case opening and/or closing tags are on separate lines.
+ chop = lchop . rchop
literal :: PandocMonad m => MuseParser m (F Blocks)
literal = liftM (return . rawBlock) $ htmlElement "literal"
diff --git a/test/Tests/Readers/Muse.hs b/test/Tests/Readers/Muse.hs
index 6f602d7c3..43a1d0697 100644
--- a/test/Tests/Readers/Muse.hs
+++ b/test/Tests/Readers/Muse.hs
@@ -230,6 +230,31 @@ tests =
lineBlock [ "Foo bar" ] <>
lineBlock [ "Foo bar" ] <>
lineBlock [ "\160\160\160Foo" ]
+ , testGroup "Example tag"
+ [ "Tags on separate lines" =:
+ T.unlines [ "<example>"
+ , "Example line"
+ , "</example>"
+ ] =?>
+ codeBlock "Example line"
+ , "One line" =:
+ "<example>Example line</example>" =?>
+ codeBlock "Example line"
+ , "One blank line in the beginning" =:
+ T.unlines [ "<example>"
+ , ""
+ , "Example line"
+ , "</example>"
+ ] =?>
+ codeBlock "\nExample line"
+ , "One blank line in the end" =:
+ T.unlines [ "<example>"
+ , "Example line"
+ , ""
+ , "</example>"
+ ] =?>
+ codeBlock "Example line\n"
+ ]
, "Center" =: "<center>Hello, world</center>" =?> para (text "Hello, world")
, "Right" =: "<right>Hello, world</right>" =?> para (text "Hello, world")
, testGroup "Comments"