git.iko.soy/typeable/pandoc
on master help sign in
Muse reader: don't allow emphasis to be preceded by letter
commit3ae359721d174205582cd5bd3b13525493e10619 authorAlexander Krotov <ilabdsf@gmail.com> dateWed 6 Dec 2017, 19:04 (9 years ago) parent12789fd
2 files changed+16−2
src/Text/Pandoc/Readers/Muse.hs+12−2 test/Tests/Readers/Muse.hs+4
src/Text/Pandoc/Readers/Muse.hs+12−2
@@ -136,6 +136,13 @@ commonPrefix (x:xs) (y:ys)
136136 | x == y = x : commonPrefix xs ys
137137 | otherwise = []
138138
139+atStart :: PandocMonad m => MuseParser m a -> MuseParser m a
140+atStart p = do
141+ pos <- getPosition
142+ st <- getState
143+ guard $ stateLastStrPos st /= Just pos
144+ p
145+
139146--
140147-- directive parsers
141148--
@@ -668,7 +675,7 @@ enclosedInlines :: (PandocMonad m, Show a, Show b)
668675 -> MuseParser m b
669676 -> MuseParser m (F Inlines)
670677enclosedInlines start end = try $
671− trimInlinesF . mconcat <$> (enclosed start end inline <* notFollowedBy (satisfy isLetter))
678+ trimInlinesF . mconcat <$> (enclosed (atStart start) end inline <* notFollowedBy (satisfy isLetter))
672679
673680inlineTag :: PandocMonad m
674681 => (Inlines -> Inlines)
@@ -745,7 +752,10 @@ inlineLiteralTag = do
745752 rawInline (attrs, content) = B.rawInline (format attrs) content
746753
747754str :: PandocMonad m => MuseParser m (F Inlines)
748−str = return . B.str <$> many1 alphaNum
755+str = do
756+ result <- many1 alphaNum
757+ updateLastStrPos
758+ return $ return $ B.str result
749759
750760symbol :: PandocMonad m => MuseParser m (F Inlines)
751761symbol = return . B.str <$> count 1 nonspaceChar
test/Tests/Readers/Muse.hs+4
@@ -70,6 +70,10 @@ tests =
7070 "Foo *bar*x baz" =?>
7171 para "Foo *bar*x baz"
7272
73+ , "Letter before opening *" =:
74+ "Foo x*bar* baz" =?>
75+ para "Foo x*bar* baz"
76+
7377 , "Emphasis tag" =:
7478 "<em>Foo bar</em>" =?>
7579 para (emph . spcSep $ ["Foo", "bar"])