Markdown writer: Better escaping when +smart.
This commit is contained in:
parent
cb1b0bcba7
commit
e0abe18bb9
1 changed files with 21 additions and 17 deletions
|
@ -267,23 +267,27 @@ noteToMarkdown opts num blocks = do
|
|||
|
||||
-- | Escape special characters for Markdown.
|
||||
escapeString :: WriterOptions -> String -> String
|
||||
escapeString opts = escapeStringUsing markdownEscapes
|
||||
where markdownEscapes = ('<', "<") : ('>', ">") :
|
||||
backslashEscapes specialChars
|
||||
specialChars =
|
||||
(if isEnabled Ext_superscript opts
|
||||
then ('^':)
|
||||
else id) .
|
||||
(if isEnabled Ext_subscript opts
|
||||
then ('~':)
|
||||
else id) .
|
||||
(if isEnabled Ext_tex_math_dollars opts
|
||||
then ('$':)
|
||||
else id) $
|
||||
"\\`*_[]#" ++
|
||||
if isEnabled Ext_smart opts
|
||||
then "\"'"
|
||||
else ""
|
||||
escapeString _ [] = []
|
||||
escapeString opts (c:cs) =
|
||||
case c of
|
||||
'<' -> "<" ++ escapeString opts cs
|
||||
'>' -> ">" ++ escapeString opts cs
|
||||
_ | c `elem` ['\\','`','*','_','[',']','#'] ->
|
||||
'\\':c:escapeString opts cs
|
||||
'^' | isEnabled Ext_superscript opts -> '\\':'^':escapeString opts cs
|
||||
'~' | isEnabled Ext_subscript opts -> '\\':'~':escapeString opts cs
|
||||
'$' | isEnabled Ext_tex_math_dollars opts -> '\\':'$':escapeString opts cs
|
||||
'\'' | isEnabled Ext_smart opts -> '\\':'\'':escapeString opts cs
|
||||
'"' | isEnabled Ext_smart opts -> '\\':'"':escapeString opts cs
|
||||
'-' | isEnabled Ext_smart opts ->
|
||||
case cs of
|
||||
'-':_ -> '\\':'-':escapeString opts cs
|
||||
_ -> '-':escapeString opts cs
|
||||
'.' | isEnabled Ext_smart opts ->
|
||||
case cs of
|
||||
'.':'.':rest -> '\\':'.':'.':'.':escapeString opts rest
|
||||
_ -> '.':escapeString opts cs
|
||||
_ -> c : escapeString opts cs
|
||||
|
||||
-- | Construct table of contents from list of header blocks.
|
||||
tableOfContents :: PandocMonad m => WriterOptions -> [Block] -> m Doc
|
||||
|
|
Loading…
Reference in a new issue