From 87dda2109d01098dcf41c01559d3e91e2627cd10 Mon Sep 17 00:00:00 2001 From: Alexander Krotov Date: Thu, 5 Apr 2018 19:48:39 +0300 Subject: Muse writer: escape horizontal rule only if at the beginning of the line --- src/Text/Pandoc/Writers/Muse.hs | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) (limited to 'src') diff --git a/src/Text/Pandoc/Writers/Muse.hs b/src/Text/Pandoc/Writers/Muse.hs index 4986aa8a6..e9cf6d433 100644 --- a/src/Text/Pandoc/Writers/Muse.hs +++ b/src/Text/Pandoc/Writers/Muse.hs @@ -325,7 +325,6 @@ conditionalEscapeString :: Bool -> String -> String conditionalEscapeString isInsideLinkDescription s = if any (`elem` ("#*<=>|" :: String)) s || "::" `isInfixOf` s || - "----" `isInfixOf` s || "~~" `isInfixOf` s || "[[" `isInfixOf` s || ("]" `isInfixOf` s && isInsideLinkDescription) || @@ -395,12 +394,18 @@ urlEscapeBrackets (']':xs) = '%':'5':'D':urlEscapeBrackets xs urlEscapeBrackets (x:xs) = x:urlEscapeBrackets xs urlEscapeBrackets [] = [] +isHorizontalRule :: String -> Bool +isHorizontalRule s = + ((length xs) >= 4) && null ys + where (xs, ys) = span (== '-') s + fixOrEscape :: Bool -> Inline -> Bool fixOrEscape sp (Str "-") = sp fixOrEscape sp (Str ";") = not sp -fixOrEscape sp (Str s) = sp && (startsWithMarker isDigit s || +fixOrEscape sp (Str s) = (sp && (startsWithMarker isDigit s || startsWithMarker isAsciiLower s || - startsWithMarker isAsciiUpper s) + startsWithMarker isAsciiUpper s)) + || isHorizontalRule s fixOrEscape _ Space = True fixOrEscape _ SoftBreak = True fixOrEscape _ _ = False -- cgit v1.2.3