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