diff options
author | Alexander Krotov <ilabdsf@gmail.com> | 2018-09-19 15:02:25 +0300 |
---|---|---|
committer | Alexander Krotov <ilabdsf@gmail.com> | 2018-09-19 15:19:06 +0300 |
commit | 1b8c22de1df43a88c13f6d0d0c7c08f9bf84c7a5 (patch) | |
tree | 42ccd361c10f3b2b19706ed4ff5b8ac3ecafe977 | |
parent | 6be2e4339753a3dc6e00a4f07b9315e131fad5be (diff) | |
download | pandoc-1b8c22de1df43a88c13f6d0d0c7c08f9bf84c7a5.tar.gz |
Muse reader: get rid of HTML parser dependency
-rw-r--r-- | src/Text/Pandoc/Readers/Muse.hs | 18 |
1 files changed, 13 insertions, 5 deletions
diff --git a/src/Text/Pandoc/Readers/Muse.hs b/src/Text/Pandoc/Readers/Muse.hs index 7f0bd374f..024ede456 100644 --- a/src/Text/Pandoc/Readers/Muse.hs +++ b/src/Text/Pandoc/Readers/Muse.hs @@ -59,7 +59,6 @@ import Text.Pandoc.Definition import Text.Pandoc.Logging import Text.Pandoc.Options import Text.Pandoc.Parsing hiding (F, enclosed) -import Text.Pandoc.Readers.HTML (htmlTag) import Text.Pandoc.Shared (crFilter, underlineSpan) -- | Read Muse from an input string and return a Pandoc document. @@ -180,12 +179,21 @@ someUntil p end = first <$> ((:) <$> p) <*> manyUntil p end -- ** HTML parsers openTag :: PandocMonad m => String -> MuseParser m [(String, String)] -openTag tag = do - (TagOpen _ attr, _) <- htmlTag(~== TagOpen tag []) - return $ attr +openTag tag = try $ do + char '<' + string tag + attrs <- manyTill attr (char '>') + return attrs + where + attr = try $ do + many1 spaceChar + key <- many1 (noneOf "=\n") + string "=\"" + value <- manyTill (noneOf "\"") (char '"') + return (key, value) closeTag :: PandocMonad m => String -> MuseParser m () -closeTag tag = void $ htmlTag (~== TagClose tag) +closeTag tag = try $ string "</" >> string tag >> void (char '>') -- | Parse HTML tag, returning its attributes and literal contents. htmlElement :: PandocMonad m |