aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlexander Krotov <ilabdsf@gmail.com>2017-07-21 11:04:13 +0300
committerJohn MacFarlane <jgm@berkeley.edu>2017-07-21 10:04:13 +0200
commit335a1c7f4867f7cd3575f07b5efa75712d59d1ac (patch)
tree9849b9e1eb01d5d5eedfa60d32c4c7a336eb0fb8
parent7191fe1f29f2f8b45f9be7e0f8bc9ed889e431d2 (diff)
downloadpandoc-335a1c7f4867f7cd3575f07b5efa75712d59d1ac.tar.gz
Muse reader: fix reading of lists inside tags (#3802)
-rw-r--r--src/Text/Pandoc/Readers/Muse.hs5
-rw-r--r--test/Tests/Readers/Muse.hs28
2 files changed, 30 insertions, 3 deletions
diff --git a/src/Text/Pandoc/Readers/Muse.hs b/src/Text/Pandoc/Readers/Muse.hs
index 1ae73c148..9d967a9de 100644
--- a/src/Text/Pandoc/Readers/Muse.hs
+++ b/src/Text/Pandoc/Readers/Muse.hs
@@ -115,11 +115,10 @@ htmlElement :: PandocMonad m => String -> MuseParser m (Attr, String)
htmlElement tag = try $ do
(TagOpen _ attr, _) <- htmlTag (~== TagOpen tag [])
content <- manyTill anyChar (endtag <|> endofinput)
- return (htmlAttrToPandoc attr, trim content)
+ return (htmlAttrToPandoc attr, content)
where
endtag = void $ htmlTag (~== TagClose tag)
endofinput = lookAhead $ try $ skipMany blankline >> skipSpaces >> eof
- trim = dropWhile (=='\n') . reverse . dropWhile (=='\n') . reverse
htmlAttrToPandoc :: [Attribute String] -> Attr
htmlAttrToPandoc attrs = (ident, classes, keyvals)
@@ -132,7 +131,7 @@ parseHtmlContentWithAttrs :: PandocMonad m
=> String -> MuseParser m a -> MuseParser m (Attr, [a])
parseHtmlContentWithAttrs tag parser = do
(attr, content) <- htmlElement tag
- parsedContent <- try $ parseContent content
+ parsedContent <- try $ parseContent (content ++ "\n")
return (attr, parsedContent)
where
parseContent = parseFromString $ nested $ manyTill parser endOfContent
diff --git a/test/Tests/Readers/Muse.hs b/test/Tests/Readers/Muse.hs
index fe0a59992..a069bb972 100644
--- a/test/Tests/Readers/Muse.hs
+++ b/test/Tests/Readers/Muse.hs
@@ -314,5 +314,33 @@ tests =
, para "* Bar"
]
]
+ , "List inside a tag" =:
+ T.unlines
+ [ "<quote>"
+ , " 1. First"
+ , ""
+ , " 2. Second"
+ , ""
+ , " 3. Third"
+ , "</quote>"
+ ] =?>
+ blockQuote (orderedListWith (1, Decimal, Period) [ para "First"
+ , para "Second"
+ , para "Third"
+ ])
+ -- Amusewiki requires block tags to be on separate lines,
+ -- but Emacs Muse allows them to be on the same line as contents.
+ , "List inside an inline tag" =:
+ T.unlines
+ [ "<quote> 1. First"
+ , ""
+ , " 2. Second"
+ , ""
+ , " 3. Third</quote>"
+ ] =?>
+ blockQuote (orderedListWith (1, Decimal, Period) [ para "First"
+ , para "Second"
+ , para "Third"
+ ])
]
]