git.iko.soy/typeable/pandoc
on master help sign in
Muse reader: simplify emphasis parsing
d3ba2fcAlexander Krotov
src/Text/Pandoc/Readers/Muse.hs+7−17
@@ -59,7 +59,7 @@ import Text.Pandoc.Definition
59import Text.Pandoc.Error (PandocError (PandocParsecError))
59import Text.Pandoc.Error (PandocError (PandocParsecError))
60import Text.Pandoc.Logging
60import Text.Pandoc.Logging
61import Text.Pandoc.Options
61import Text.Pandoc.Options
62−import Text.Pandoc.Parsing hiding (F, enclosed)
62+import Text.Pandoc.Parsing hiding (F)
63import Text.Pandoc.Shared (crFilter, underlineSpan)
63import Text.Pandoc.Shared (crFilter, underlineSpan)
64
64
65-- | Read Muse from an input string and return a Pandoc document.
65-- | Read Muse from an input string and return a Pandoc document.
@@ -782,24 +782,14 @@ whitespace = try $ pure B.space <$ skipMany1 spaceChar
782br :: PandocMonad m => MuseParser m (F Inlines)
782br :: PandocMonad m => MuseParser m (F Inlines)
783br = try $ pure B.linebreak <$ string "<br>"
783br = try $ pure B.linebreak <$ string "<br>"
784
784
785−emphasisBetween :: (PandocMonad m, Show a) => MuseParser m a -> MuseParser m (F Inlines)
785+emphasisBetween :: (PandocMonad m, Show a)
786−emphasisBetween c = try $ enclosedInlines c c
787−
788−-- | Parses material enclosed between start and end parsers.
789−enclosed :: (Show end, Stream s m Char) => ParserT s st m t -- ^ start parser
790− -> ParserT s st m end -- ^ end parser
791− -> ParserT s st m a -- ^ content parser (to be used repeatedly)
792− -> ParserT s st m [a]
793−enclosed start end parser = try $
794− start *> notFollowedBy spaceChar *> many1Till parser end
795−
796−enclosedInlines :: (PandocMonad m, Show a, Show b)
797 => MuseParser m a
786 => MuseParser m a
798− -> MuseParser m b
799 -> MuseParser m (F Inlines)
787 -> MuseParser m (F Inlines)
800−enclosedInlines start end = try $ trimInlinesF . mconcat
788+emphasisBetween p = try $ trimInlinesF . mconcat
801− <$> enclosed (atStart start) end inline
789+ <$ atStart p
790+ <* notFollowedBy spaceChar
791+ <*> many1Till inline p
802− <* notFollowedBy (satisfy isAlphaNum)
792+ <* notFollowedBy alphaNum
803
793
804-- | Parse an inline tag, such as @\<em>@ and @\<strong>@.
794-- | Parse an inline tag, such as @\<em>@ and @\<strong>@.
805inlineTag :: PandocMonad m
795inlineTag :: PandocMonad m