From 4c42a5016444120cc0304c7be5d27e31549e0521 Mon Sep 17 00:00:00 2001 From: Christian Muehlhaeuser Date: Sat, 28 Dec 2019 00:57:24 +0100 Subject: [PATCH] Don't treat fragments as valid URLs --- ansi/link.go | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/ansi/link.go b/ansi/link.go index 720896e..4cb5931 100644 --- a/ansi/link.go +++ b/ansi/link.go @@ -2,6 +2,7 @@ package ansi import ( "io" + "net/url" ) // A LinkElement is used to render hyperlinks. @@ -14,8 +15,7 @@ type LinkElement struct { func (e *LinkElement) Render(w io.Writer, ctx RenderContext) error { var textRendered bool - if len(e.Text) > 0 && - e.Text != e.URL { + if len(e.Text) > 0 && e.Text != e.URL { textRendered = true el := &BaseElement{ @@ -52,7 +52,9 @@ func (e *LinkElement) Render(w io.Writer, ctx RenderContext) error { } */ - if len(e.URL) > 0 { + u, err := url.Parse(e.URL) + if err == nil && + "#"+u.Fragment != e.URL { // if the URL only consists of an anchor, ignore it pre := " " style := ctx.options.Styles.Link if !textRendered {