aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJohn MacFarlane <jgm@berkeley.edu>2021-11-15 11:06:08 -0800
committerJohn MacFarlane <jgm@berkeley.edu>2021-11-15 11:06:50 -0800
commitc19f0634203f224a26851635f4b86e1013a6618a (patch)
tree630c68467d4b80a07335fa4c88dfa420576aed6a
parentea268fd8a72fe59e6cb0086b0c7471b8aa316af1 (diff)
downloadpandoc-c19f0634203f224a26851635f4b86e1013a6618a.tar.gz
Markdown writer: don't create autolinks when this loses information.
Previously we sometimes lost attributes when rendering links as autolinks. Closes #7692.
-rw-r--r--src/Text/Pandoc/Writers/Markdown/Inline.hs5
-rw-r--r--test/command/7692.md13
2 files changed, 17 insertions, 1 deletions
diff --git a/src/Text/Pandoc/Writers/Markdown/Inline.hs b/src/Text/Pandoc/Writers/Markdown/Inline.hs
index 065157e80..be22f8d9f 100644
--- a/src/Text/Pandoc/Writers/Markdown/Inline.hs
+++ b/src/Text/Pandoc/Writers/Markdown/Inline.hs
@@ -531,7 +531,7 @@ inlineToMarkdown opts (Cite (c:cs) lst)
return $ pdoc <+> r
modekey SuppressAuthor = "-"
modekey _ = ""
-inlineToMarkdown opts lnk@(Link attr txt (src, tit)) = do
+inlineToMarkdown opts lnk@(Link attr@(ident,classes,kvs) txt (src, tit)) = do
variant <- asks envVariant
linktext <- inlineListToMarkdown opts txt
let linktitle = if T.null tit
@@ -539,6 +539,9 @@ inlineToMarkdown opts lnk@(Link attr txt (src, tit)) = do
else literal $ " \"" <> tit <> "\""
let srcSuffix = fromMaybe src (T.stripPrefix "mailto:" src)
let useAuto = isURI src &&
+ T.null ident &&
+ null kvs &&
+ (null classes || classes == ["uri"] || classes == ["email"]) &&
case txt of
[Str s] | escapeURI s == srcSuffix -> True
_ -> False
diff --git a/test/command/7692.md b/test/command/7692.md
new file mode 100644
index 000000000..2a91ef378
--- /dev/null
+++ b/test/command/7692.md
@@ -0,0 +1,13 @@
+```
+% pandoc -t markdown
+[https://example.com](https://example.com){.clz}
+^D
+[https://example.com](https://example.com){.clz}
+```
+
+```
+% pandoc -f markdown -t html | pandoc -f html -t markdown
+<http://example.com>
+^D
+<http://example.com>
+```