From b8afec05e0ce85ab811bf55d4948be768ad363e2 Mon Sep 17 00:00:00 2001 From: John MacFarlane <jgm@berkeley.edu> Date: Sun, 30 Jul 2017 13:45:22 -0700 Subject: [PATCH] Markdown writer: better escaping of `<` and `>`. If `all_symbols_escapable` is set, we backslash escape these. Otherwise we use entities as before. --- src/Text/Pandoc/Writers/Markdown.hs | 8 ++++++-- test/writer.markdown | 8 ++++---- 2 files changed, 10 insertions(+), 6 deletions(-) diff --git a/src/Text/Pandoc/Writers/Markdown.hs b/src/Text/Pandoc/Writers/Markdown.hs index 1e0d8bde2..837c177f1 100644 --- a/src/Text/Pandoc/Writers/Markdown.hs +++ b/src/Text/Pandoc/Writers/Markdown.hs @@ -280,8 +280,12 @@ escapeString :: WriterOptions -> String -> String escapeString _ [] = [] escapeString opts (c:cs) = case c of - '<' -> "<" ++ escapeString opts cs - '>' -> ">" ++ escapeString opts cs + '<' | isEnabled Ext_all_symbols_escapable opts -> + '\\' : '<' : escapeString opts cs + | otherwise -> "<" ++ escapeString opts cs + '>' | isEnabled Ext_all_symbols_escapable opts -> + '\\' : '>' : escapeString opts cs + | otherwise -> ">" ++ escapeString opts cs _ | c `elem` ['\\','`','*','_','[',']','#'] -> '\\':c:escapeString opts cs '^' | isEnabled Ext_superscript opts -> '\\':'^':escapeString opts cs diff --git a/test/writer.markdown b/test/writer.markdown index d41030785..0cc465f1e 100644 --- a/test/writer.markdown +++ b/test/writer.markdown @@ -80,7 +80,7 @@ E-mail style: > > > nested -This should not be a block quote: 2 > 1. +This should not be a block quote: 2 \> 1. And a following paragraph. @@ -580,9 +580,9 @@ AT&T is another way to write it. This & that. -4 < 5. +4 \< 5. -6 > 5. +6 \> 5. Backslash: \\ @@ -604,7 +604,7 @@ Left paren: ( Right paren: ) -Greater-than: > +Greater-than: \> Hash: \#