diff options
| author | Alexander Krotov <ilabdsf@gmail.com> | 2018-09-11 01:36:11 +0300 | 
|---|---|---|
| committer | Alexander Krotov <ilabdsf@gmail.com> | 2018-09-11 01:36:11 +0300 | 
| commit | 00b2b0feb660bbe4ec50b3a33131e75cf0341e4c (patch) | |
| tree | 661475e8c429bcfe9d8b7e0b159a242d4db026b5 /src/Text/Pandoc/Writers | |
| parent | c2b97c4b8026694d9c59d7b9f6d333d204f669ce (diff) | |
| download | pandoc-00b2b0feb660bbe4ec50b3a33131e75cf0341e4c.tar.gz | |
Muse writer: normalize inline list before testing if tags should be used
Diffstat (limited to 'src/Text/Pandoc/Writers')
| -rw-r--r-- | src/Text/Pandoc/Writers/Muse.hs | 37 | 
1 files changed, 18 insertions, 19 deletions
| diff --git a/src/Text/Pandoc/Writers/Muse.hs b/src/Text/Pandoc/Writers/Muse.hs index 87c6c58da..7dbe3a53f 100644 --- a/src/Text/Pandoc/Writers/Muse.hs +++ b/src/Text/Pandoc/Writers/Muse.hs @@ -420,11 +420,6 @@ 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 @@ -518,49 +513,53 @@ inlineToMuse (Str str) = do    return $ text escapedStr  inlineToMuse (Emph [Strong lst]) = do    useTags <- gets stUseTags +  let lst' = normalizeInlineList lst    if useTags -    then do contents <- local (\env -> env { envInsideAsterisks = True }) $ inlineListToMuse lst +    then do contents <- local (\env -> env { envInsideAsterisks = True }) $ inlineListToMuse lst'              modify $ \st -> st { stUseTags = False }              return $ "<em>**" <> contents <> "**</em>" -    else if emptyInlines lst || startsWithSpace lst || endsWithSpace lst +    else if null lst' || startsWithSpace lst' || endsWithSpace lst'             then do -             contents <- local (\env -> env { envInsideAsterisks = False }) $ inlineListToMuse lst +             contents <- local (\env -> env { envInsideAsterisks = False }) $ inlineListToMuse lst'               modify $ \st -> st { stUseTags = True }               return $ "*<strong>" <> contents <> "</strong>*"             else do -             contents <- local (\env -> env { envInsideAsterisks = True }) $ inlineListToMuse lst +             contents <- local (\env -> env { envInsideAsterisks = True }) $ inlineListToMuse lst'               modify $ \st -> st { stUseTags = True }               return $ "***" <> contents <> "***"  inlineToMuse (Emph lst) = do    useTags <- gets stUseTags -  if useTags || emptyInlines lst || startsWithSpace lst || endsWithSpace lst -    then do contents <- inlineListToMuse lst +  let lst' = normalizeInlineList lst +  if useTags || null lst' || startsWithSpace lst' || endsWithSpace lst' +    then do contents <- inlineListToMuse lst'              return $ "<em>" <> contents <> "</em>" -    else do contents <- local (\env -> env { envInsideAsterisks = True }) $ inlineListToMuse lst +    else do contents <- local (\env -> env { envInsideAsterisks = True }) $ inlineListToMuse lst'              modify $ \st -> st { stUseTags = True }              return $ "*" <> contents <> "*"  inlineToMuse (Strong [Emph lst]) = do    useTags <- gets stUseTags +  let lst' = normalizeInlineList lst    if useTags -    then do contents <- local (\env -> env { envInsideAsterisks = True }) $ inlineListToMuse lst +    then do contents <- local (\env -> env { envInsideAsterisks = True }) $ inlineListToMuse lst'              modify $ \st -> st { stUseTags = False }              return $ "<strong>*" <> contents <> "*</strong>" -    else if emptyInlines lst || startsWithSpace lst || endsWithSpace lst +    else if null lst' || startsWithSpace lst' || endsWithSpace lst'             then do -             contents <- local (\env -> env { envInsideAsterisks = False }) $ inlineListToMuse lst +             contents <- local (\env -> env { envInsideAsterisks = False }) $ inlineListToMuse lst'               modify $ \st -> st { stUseTags = True }               return $ "**<em>" <> contents <> "</em>**"             else do -             contents <- local (\env -> env { envInsideAsterisks = True }) $ inlineListToMuse lst +             contents <- local (\env -> env { envInsideAsterisks = True }) $ inlineListToMuse lst'               modify $ \st -> st { stUseTags = True }               return $ "***" <> contents <> "***"  inlineToMuse (Strong lst) = do    useTags <- gets stUseTags -  if useTags || emptyInlines lst || startsWithSpace lst || endsWithSpace lst -    then do contents <- inlineListToMuse lst +  let lst' = normalizeInlineList lst +  if useTags || null lst' || startsWithSpace lst' || endsWithSpace lst' +    then do contents <- inlineListToMuse lst'              modify $ \st -> st { stUseTags = False }              return $ "<strong>" <> contents <> "</strong>" -    else do contents <- local (\env -> env { envInsideAsterisks = True }) $ inlineListToMuse lst +    else do contents <- local (\env -> env { envInsideAsterisks = True }) $ inlineListToMuse lst'              modify $ \st -> st { stUseTags = True }              return $ "**" <> contents <> "**"  inlineToMuse (Strikeout lst) = do | 
