diff options
-rw-r--r-- | src/Text/Pandoc/Readers/Muse.hs | 3 | ||||
-rw-r--r-- | test/Tests/Readers/Muse.hs | 18 |
2 files changed, 20 insertions, 1 deletions
diff --git a/src/Text/Pandoc/Readers/Muse.hs b/src/Text/Pandoc/Readers/Muse.hs index 293bc627c..c8868b20d 100644 --- a/src/Text/Pandoc/Readers/Muse.hs +++ b/src/Text/Pandoc/Readers/Muse.hs @@ -169,9 +169,10 @@ parseHtmlContent :: PandocMonad m => String -> MuseParser m (Attr, F Blocks) parseHtmlContent tag = try $ do many spaceChar + pos <- getPosition (TagOpen _ attr, _) <- htmlTag (~== TagOpen tag []) manyTill spaceChar eol - content <- parseBlocksTill (try $ manyTill spaceChar endtag) + content <- parseBlocksTill (try $ ((count (sourceColumn pos - 1) spaceChar) >> endtag)) manyTill spaceChar eol -- closing tag must be followed by optional whitespace and newline return (htmlAttrToPandoc attr, content) where diff --git a/test/Tests/Readers/Muse.hs b/test/Tests/Readers/Muse.hs index f64927ff1..f961083ef 100644 --- a/test/Tests/Readers/Muse.hs +++ b/test/Tests/Readers/Muse.hs @@ -1242,5 +1242,23 @@ tests = , " </verse>" ] =?> bulletList [ para "<quote>" <> lineBlock [ "</quote>" ] ] + + -- Allowing indented closing tags is dangerous, + -- as they may terminate lists + , "No indented closing tags" =: + T.unlines + [ "<quote>" + , "" + , " - Foo" + , "" + , " </quote>" + , "" + , " bar" + , "" + , " <verse>" + , " </quote>" + , " </verse>" + ] =?> + para "<quote>" <> bulletList [ para "Foo" <> para "</quote>" <> para "bar" <> lineBlock [ "</quote>" ] ] ] ] |