From c2b97c4b8026694d9c59d7b9f6d333d204f669ce Mon Sep 17 00:00:00 2001 From: Alexander Krotov Date: Tue, 11 Sep 2018 00:38:55 +0300 Subject: Muse writer: use tags instead of lightweight markup for empty strings --- src/Text/Pandoc/Writers/Muse.hs | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) (limited to 'src/Text/Pandoc/Writers') 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 $ "**" <> contents <> "**" - 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 $ "" <> contents <> "" 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 $ "*" <> contents <> "*" - 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 $ "" <> contents <> "" -- cgit v1.2.3