git.iko.soy/typeable/pandoc
on master help sign in
Muse reader: do not split series of asterisks into symbols and emphasis

Fixes #5821

commitd5c13dd4383e4809c4a6e935398a4bfa6e1b04e5 authorAlexander Krotov <ilabdsf@gmail.com> dateTue 15 Oct 2019, 01:55 (7 years ago) parent13e0ac1
2 files changed+15
src/Text/Pandoc/Readers/Muse.hs+7 test/Tests/Readers/Muse.hs+8
src/Text/Pandoc/Readers/Muse.hs+7
@@ -755,6 +755,7 @@ inline' = whitespace
755755 <|> mathTag
756756 <|> inlineLiteralTag
757757 <|> str
758+ <|> asterisks
758759 <|> symbol
759760 <?> "inline"
760761
@@ -909,6 +910,12 @@ inlineLiteralTag = try $ fmap pure $ B.rawInline
909910str :: PandocMonad m => MuseParser m (F Inlines)
910911str = return . B.str <$> many1 alphaNum <* updateLastStrPos
911912
913+-- | Consume asterisks that were not used as emphasis opening.
914+-- This prevents series of asterisks from being split into
915+-- literal asterisk and emphasis opening.
916+asterisks :: PandocMonad m => MuseParser m (F Inlines)
917+asterisks = pure . B.str <$> many1 (char '*')
918+
912919symbol :: PandocMonad m => MuseParser m (F Inlines)
913920symbol = pure . B.str . pure <$> nonspaceChar
914921
test/Tests/Readers/Muse.hs+8
@@ -133,10 +133,18 @@ tests =
133133 "**foo *bar* baz**" =?>
134134 para (strong (text "foo " <> emph (text "bar") <> text " baz"))
135135
136+ , "Opening asterisk can't be preceded by another one" =:
137+ "**foo*" =?>
138+ para "**foo*"
139+
136140 , "Asterisk between words does not terminate emphasis" =:
137141 "*foo*bar*" =?>
138142 para (emph $ "foo*bar")
139143
144+ , "Asterisks between words do not terminate strong" =:
145+ "**foo**bar**" =?>
146+ para (strong $ "foo**bar")
147+
140148 , test emacsMuse "Underline"
141149 ("_Underline_" =?> para (underlineSpan "Underline"))
142150