From 5f5d42a466833e78bfb2b70286e1e1a3c1fd613d Mon Sep 17 00:00:00 2001 From: Francesc Campoy Date: Fri, 3 Jan 2014 14:51:34 -0800 Subject: [PATCH] go.tools/present: links with the prefix "javascript:" should be executed in the same window. Using url.Parse instead of more ad hoc solution. R=r CC=golang-codereviews https://golang.org/cl/47320043 --- present/link.go | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/present/link.go b/present/link.go index 813344c6..4973b96f 100644 --- a/present/link.go +++ b/present/link.go @@ -6,6 +6,7 @@ package present import ( "fmt" + "log" "net/url" "strings" ) @@ -40,18 +41,20 @@ func parseLink(ctx *Context, fileName string, lineno int, text string) (Elem, er return Link{url, label}, nil } -func renderLink(url, text string) string { +func renderLink(href, text string) string { text = font(text) if text == "" { - text = url + text = href } // Open links in new window only when their url is absolute. target := "_blank" - if url[0] == '/' { + if u, err := url.Parse(href); err != nil { + log.Println("rendernLink parsing url: %v", err) + } else if !u.IsAbs() || u.Scheme == "javascript" { target = "_self" } - return fmt.Sprintf(`%s`, url, target, text) + return fmt.Sprintf(`%s`, href, target, text) } // parseInlineLink parses an inline link at the start of s, and returns