aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/Text/Pandoc/Writers/Muse.hs13
-rw-r--r--test/Tests/Writers/Muse.hs4
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***"