aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJohn MacFarlane <jgm@berkeley.edu>2020-04-17 22:42:21 -0700
committerJohn MacFarlane <jgm@berkeley.edu>2020-04-17 22:42:21 -0700
commit9a809d4d01f1a9cba4401e98d95cccf8a0ec7e75 (patch)
treeef09a4a428fb512e7df44142fd56892496f63fdd
parent0d2b8e3fe1d6a27aac082be7711b7156783b3051 (diff)
downloadpandoc-9a809d4d01f1a9cba4401e98d95cccf8a0ec7e75.tar.gz
Markdown writer: avoid unnecessary escapes before intraword `_`
when `intraword_underscores` extension is enabled. Closes #6296.
-rw-r--r--src/Text/Pandoc/Writers/Markdown.hs7
-rw-r--r--test/command/6296.md14
-rw-r--r--test/writer.markdown2
3 files changed, 21 insertions, 2 deletions
diff --git a/src/Text/Pandoc/Writers/Markdown.hs b/src/Text/Pandoc/Writers/Markdown.hs
index 7a11e3c16..fb9888b24 100644
--- a/src/Text/Pandoc/Writers/Markdown.hs
+++ b/src/Text/Pandoc/Writers/Markdown.hs
@@ -313,7 +313,12 @@ escapeText opts =
case cs of
'.':'.':rest -> '\\':'.':'.':'.':go rest
_ -> '.':go cs
- _ -> c : go cs
+ _ -> case cs of
+ '_':x:xs
+ | isEnabled Ext_intraword_underscores opts
+ , isAlphaNum c
+ , isAlphaNum x -> c : '_' : x : go xs
+ _ -> c : go cs
attrsToMarkdown :: Attr -> Doc Text
attrsToMarkdown attribs = braces $ hsep [attribId, attribClasses, attribKeys]
diff --git a/test/command/6296.md b/test/command/6296.md
new file mode 100644
index 000000000..f4ce6b6d5
--- /dev/null
+++ b/test/command/6296.md
@@ -0,0 +1,14 @@
+```
+% pandoc -f native -t markdown
+[Str "_hi_there"]
+^D
+\_hi_there
+```
+
+```
+% pandoc -f native -t markdown-intraword_underscores
+[Str "_hi_there"]
+^D
+\_hi\_there
+```
+
diff --git a/test/writer.markdown b/test/writer.markdown
index 7393ee18e..ec867fa47 100644
--- a/test/writer.markdown
+++ b/test/writer.markdown
@@ -683,7 +683,7 @@ Just a [URL](/url/).
[URL and title](/url/ "title with single quotes")
-[with\_underscore](/url/with_underscore)
+[with_underscore](/url/with_underscore)
[Email link](mailto:nobody@nowhere.net)