From ea412c8e8399dbd58d3a44a23ea97e3b04498e90 Mon Sep 17 00:00:00 2001 From: Andrii Raikov Date: Thu, 13 May 2021 11:55:55 +0200 Subject: [PATCH] Fix problem with escaped ampersands --- example/example.md | 2 ++ example/example.pdf | Bin 7793 -> 8002 bytes renderer.go | 6 +++--- 3 files changed, 5 insertions(+), 3 deletions(-) diff --git a/example/example.md b/example/example.md index 26ed00c..6b77e72 100644 --- a/example/example.md +++ b/example/example.md @@ -54,6 +54,8 @@ Strikethrough uses two tildes. ~~Scratch this.~~ [You can use numbers for reference-style link definitions][1] +[I'm a link with ampersands](https://www.google.com?some=information&another[]=list&another[]=information) + Or leave it empty and use the [link text itself]. URLs and URLs in angle brackets will automatically get turned into links. diff --git a/example/example.pdf b/example/example.pdf index c4a096ae311c721ae150727dc381d64127e0c807..e486b358473b0c547fa5db535c4ce2c3de1b1cb9 100644 GIT binary patch delta 2632 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 JvN(EJ?B8M)Xf^-< diff --git a/renderer.go b/renderer.go index 8a96ac1..02079c1 100644 --- a/renderer.go +++ b/renderer.go @@ -217,7 +217,7 @@ func (r *Renderer) renderAutoLink(w Writer, source []byte, node ast.Node, enteri return ast.WalkContinue, nil } - url := string(util.EscapeHTML(util.URLEscape(n.URL(source), false))) + url := string(util.URLEscape(n.URL(source), false)) if n.AutoLinkType == ast.AutoLinkEmail && !strings.HasPrefix(strings.ToLower(url), "mailto:") { w.SetLink("mailto:" + url) } else { @@ -255,7 +255,7 @@ func (r *Renderer) renderImage(w Writer, source []byte, node ast.Node, entering } n := node.(*ast.Image) - filePath := string(util.EscapeHTML(util.URLEscape(n.Destination, true))) + filePath := string(util.URLEscape(n.Destination, true)) inlineImg := "data:image/" switch { @@ -302,7 +302,7 @@ func (r *Renderer) renderImage(w Writer, source []byte, node ast.Node, entering func (r *Renderer) renderLink(w Writer, source []byte, node ast.Node, entering bool) (ast.WalkStatus, error) { n := node.(*ast.Link) if entering { - w.SetLink(string(util.EscapeHTML(util.URLEscape(n.Destination, true)))) + w.SetLink(string(util.URLEscape(n.Destination, true))) currStyle := w.CurrentStyle() newStyle := currStyle.Clone() newStyle.FontStyle += "U"