aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorAlexander Krotov <ilabdsf@gmail.com>2018-09-19 15:02:25 +0300
committerAlexander Krotov <ilabdsf@gmail.com>2018-09-19 15:19:06 +0300
commit1b8c22de1df43a88c13f6d0d0c7c08f9bf84c7a5 (patch)
tree42ccd361c10f3b2b19706ed4ff5b8ac3ecafe977 /src
parent6be2e4339753a3dc6e00a4f07b9315e131fad5be (diff)
downloadpandoc-1b8c22de1df43a88c13f6d0d0c7c08f9bf84c7a5.tar.gz
Muse reader: get rid of HTML parser dependency
Diffstat (limited to 'src')
-rw-r--r--src/Text/Pandoc/Readers/Muse.hs18
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