diff options
-rw-r--r-- | src/Text/Pandoc/Writers/Muse.hs | 13 | ||||
-rw-r--r-- | test/Tests/Writers/Muse.hs | 4 |
2 files changed, 13 insertions, 4 deletions
diff --git a/src/Text/Pandoc/Writers/Muse.hs b/src/Text/Pandoc/Writers/Muse.hs index 627358839..87c6c58da 100644 --- a/src/Text/Pandoc/Writers/Muse.hs +++ b/src/Text/Pandoc/Writers/Muse.hs @@ -420,6 +420,11 @@ endsWithSpace [SoftBreak] = True endsWithSpace (_:xs) = endsWithSpace xs endsWithSpace [] = False +emptyInlines :: [Inline] -> Bool +emptyInlines [] = True +emptyInlines (Str "":xs) = emptyInlines xs +emptyInlines _ = False + urlEscapeBrackets :: String -> String urlEscapeBrackets (']':xs) = '%':'5':'D':urlEscapeBrackets xs urlEscapeBrackets (x:xs) = x:urlEscapeBrackets xs @@ -517,7 +522,7 @@ inlineToMuse (Emph [Strong lst]) = do then do contents <- local (\env -> env { envInsideAsterisks = True }) $ inlineListToMuse lst modify $ \st -> st { stUseTags = False } return $ "<em>**" <> contents <> "**</em>" - else if null lst || startsWithSpace lst || endsWithSpace lst + else if emptyInlines lst || startsWithSpace lst || endsWithSpace lst then do contents <- local (\env -> env { envInsideAsterisks = False }) $ inlineListToMuse lst modify $ \st -> st { stUseTags = True } @@ -528,7 +533,7 @@ inlineToMuse (Emph [Strong lst]) = do return $ "***" <> contents <> "***" inlineToMuse (Emph lst) = do useTags <- gets stUseTags - if useTags || null lst || startsWithSpace lst || endsWithSpace lst + if useTags || emptyInlines lst || startsWithSpace lst || endsWithSpace lst then do contents <- inlineListToMuse lst return $ "<em>" <> contents <> "</em>" else do contents <- local (\env -> env { envInsideAsterisks = True }) $ inlineListToMuse lst @@ -540,7 +545,7 @@ inlineToMuse (Strong [Emph lst]) = do then do contents <- local (\env -> env { envInsideAsterisks = True }) $ inlineListToMuse lst modify $ \st -> st { stUseTags = False } return $ "<strong>*" <> contents <> "*</strong>" - else if null lst || startsWithSpace lst || endsWithSpace lst + else if emptyInlines lst || startsWithSpace lst || endsWithSpace lst then do contents <- local (\env -> env { envInsideAsterisks = False }) $ inlineListToMuse lst modify $ \st -> st { stUseTags = True } @@ -551,7 +556,7 @@ inlineToMuse (Strong [Emph lst]) = do return $ "***" <> contents <> "***" inlineToMuse (Strong lst) = do useTags <- gets stUseTags - if useTags || null lst || startsWithSpace lst || endsWithSpace lst + if useTags || emptyInlines lst || startsWithSpace lst || endsWithSpace lst then do contents <- inlineListToMuse lst modify $ \st -> st { stUseTags = False } return $ "<strong>" <> contents <> "</strong>" diff --git a/test/Tests/Writers/Muse.hs b/test/Tests/Writers/Muse.hs index 29f771cf5..c747578bf 100644 --- a/test/Tests/Writers/Muse.hs +++ b/test/Tests/Writers/Muse.hs @@ -362,6 +362,10 @@ tests = [ testGroup "block elements" , "empty strong" =: strong mempty =?> "<strong></strong>" , "empty strong emphasis" =: strong (emph mempty) =?> "**<em></em>**" , "empty emphasized strong" =: emph (strong mempty) =?> "*<strong></strong>*" + , "emphasized empty string" =: emph (str "") =?> "<em></em>" + , "strong empty string" =: strong (str "") =?> "<strong></strong>" + , "strong emphasized empty string" =: strong (emph (str "")) =?> "**<em></em>**" + , "emphasized strong empty string" =: emph (strong (str "")) =?> "*<strong></strong>*" , "strong" =: strong (text "foo") =?> "**foo**" , "strong inside word" =: text "foo" <> strong (text "bar") <> text "baz" =?> "foo<strong>bar</strong>baz" , "strong emphasis" =: strong (emph (text "foo")) =?> "***foo***" |