@@ -516,6 +516,14 @@ inlineListToMuse' lst = do
516 , envAfterSpace = afterSpace || not topLevel
516 , envAfterSpace = afterSpace || not topLevel
517 }) $ inlineListToMuse lst
517 }) $ inlineListToMuse lst
519+emphasis :: PandocMonad m => String -> String -> [Inline] -> Muse m Doc
520+emphasis b e lst = do
521+ contents <- local (\env -> env { envInsideAsterisks = inAsterisks }) $ inlineListToMuse lst
522+ modify $ \st -> st { stUseTags = useTags }
523+ return $ text b <> contents <> text e
524+ where inAsterisks = last b == '*' || head e == '*'
525+ useTags = last e /= '>'
519-- | Convert Pandoc inline element to Muse.
527-- | Convert Pandoc inline element to Muse.
520inlineToMuse :: PandocMonad m
528inlineToMuse :: PandocMonad m
521 => Inline
529 => Inline
@@ -529,54 +537,30 @@ inlineToMuse (Emph [Strong lst]) = do
529 useTags <- gets stUseTags
537 useTags <- gets stUseTags
530 let lst' = normalizeInlineList lst
538 let lst' = normalizeInlineList lst
531 if useTags
539 if useTags
532− then do contents <- local (\env -> env { envInsideAsterisks = True }) $ inlineListToMuse lst'
540+ then emphasis "<em>**" "**</em>" lst'
533− modify $ \st -> st { stUseTags = False }
534− return $ "<em>**" <> contents <> "**</em>"
535 else if null lst' || startsWithSpace lst' || endsWithSpace lst'
541 else if null lst' || startsWithSpace lst' || endsWithSpace lst'
537− contents <- local (\env -> env { envInsideAsterisks = False }) $ inlineListToMuse lst'
538− modify $ \st -> st { stUseTags = True }
539− return $ "*<strong>" <> contents <> "</strong>*"
542+ then emphasis "*<strong>" "</strong>*" lst'
540− else do
543+ else emphasis "***" "***" lst'
541− contents <- local (\env -> env { envInsideAsterisks = True }) $ inlineListToMuse lst'
542− modify $ \st -> st { stUseTags = True }
543− return $ "***" <> contents <> "***"
544inlineToMuse (Emph lst) = do
544inlineToMuse (Emph lst) = do
545 useTags <- gets stUseTags
545 useTags <- gets stUseTags
546 let lst' = normalizeInlineList lst
546 let lst' = normalizeInlineList lst
547 if useTags || null lst' || startsWithSpace lst' || endsWithSpace lst'
547 if useTags || null lst' || startsWithSpace lst' || endsWithSpace lst'
548− then do contents <- inlineListToMuse lst'
548+ then emphasis "<em>" "</em>" lst'
549− modify $ \st -> st { stUseTags = False }
549+ else emphasis "*" "*" lst'
550− return $ "<em>" <> contents <> "</em>"
551− else do contents <- local (\env -> env { envInsideAsterisks = True }) $ inlineListToMuse lst'
552− modify $ \st -> st { stUseTags = True }
553− return $ "*" <> contents <> "*"
554inlineToMuse (Strong [Emph lst]) = do
550inlineToMuse (Strong [Emph lst]) = do
555 useTags <- gets stUseTags
551 useTags <- gets stUseTags
556 let lst' = normalizeInlineList lst
552 let lst' = normalizeInlineList lst
557 if useTags
553 if useTags
558− then do contents <- local (\env -> env { envInsideAsterisks = True }) $ inlineListToMuse lst'
559− modify $ \st -> st { stUseTags = False }
560− return $ "<strong>*" <> contents <> "*</strong>"
554+ then emphasis "<strong>*" "*</strong>" lst'
561 else if null lst' || startsWithSpace lst' || endsWithSpace lst'
555 else if null lst' || startsWithSpace lst' || endsWithSpace lst'
562− then do
556+ then emphasis "**<em>" "</em>**" lst'
563− contents <- local (\env -> env { envInsideAsterisks = False }) $ inlineListToMuse lst'
557+ else emphasis "***" "***" lst'
564− modify $ \st -> st { stUseTags = True }
565− return $ "**<em>" <> contents <> "</em>**"
567− contents <- local (\env -> env { envInsideAsterisks = True }) $ inlineListToMuse lst'
568− modify $ \st -> st { stUseTags = True }
569− return $ "***" <> contents <> "***"
570inlineToMuse (Strong lst) = do
558inlineToMuse (Strong lst) = do
571 useTags <- gets stUseTags
559 useTags <- gets stUseTags
572 let lst' = normalizeInlineList lst
560 let lst' = normalizeInlineList lst
573 if useTags || null lst' || startsWithSpace lst' || endsWithSpace lst'
561 if useTags || null lst' || startsWithSpace lst' || endsWithSpace lst'
574− then do contents <- inlineListToMuse lst'
575− modify $ \st -> st { stUseTags = False }
576− return $ "<strong>" <> contents <> "</strong>"
562+ then emphasis "<strong>" "</strong>" lst'
577− else do contents <- local (\env -> env { envInsideAsterisks = True }) $ inlineListToMuse lst'
563+ else emphasis "**" "**" lst'
578− modify $ \st -> st { stUseTags = True }
579− return $ "**" <> contents <> "**"
580inlineToMuse (Strikeout lst) = do
564inlineToMuse (Strikeout lst) = do
581 contents <- inlineListToMuse lst
565 contents <- inlineListToMuse lst
582 modify $ \st -> st { stUseTags = False }
566 modify $ \st -> st { stUseTags = False }