From 1b8c22de1df43a88c13f6d0d0c7c08f9bf84c7a5 Mon Sep 17 00:00:00 2001
From: Alexander Krotov <ilabdsf@gmail.com>
Date: Wed, 19 Sep 2018 15:02:25 +0300
Subject: Muse reader: get rid of HTML parser dependency

---
 src/Text/Pandoc/Readers/Muse.hs | 18 +++++++++++++-----
 1 file changed, 13 insertions(+), 5 deletions(-)

(limited to 'src')

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
-- 
cgit v1.2.3