{{- $error := false -}} {{ $href := "" }} {{ $name := "" }} {{ $url := "" }} {{ $class := "" }} {{ $case := true }} {{ $cue := site.Params.main.externalLinks.cue }} {{ $tab := site.Params.main.externalLinks.tab }} {{ $text := trim .Inner " \r\n" | .Page.RenderString | safeHTML }} {{- $anchor := "" -}} {{ if .IsNamedParams }} {{- $href = .Get "href" | default "" -}} {{- $name = .Get "name" | default "" -}} {{- $url = .Get "url" | default "" -}} {{- $cue = .Get "cue" | default site.Params.main.externalLinks.cue -}} {{- $tab = .Get "tab" | default site.Params.main.externalLinks.tab -}} {{- $case = .Get "case" | default true -}} {{- $class = .Get "class" | default "" -}} {{ else }} {{ $href = .Get 0 }} {{ end }} {{- $href = or (or $href $name) $url -}} {{ if not $href }} {{ errorf "Expected param 'href': %s" .Position -}} {{ $error = true -}} {{ end }} {{- if hasPrefix $href "http" -}} {{ $url = $href }} {{- else if not (strings.Contains $href "/") -}} {{ $url = index site.Params.links $href }} {{- end -}} {{ if not $url }} {{- $href = strings.TrimPrefix "./" $href -}} {{- if strings.Contains $href "#" }} {{ $segments := split $href "#" }} {{- if ne (len $segments) 2 }} {{ errorf "Malformed path, expected one anchor '#' only: '%s' at %s" $href .Position -}} {{ else }} {{- $url = index $segments 0 -}} {{- $anchor = index $segments 1 -}} {{ if not $url }} {{ $url = .Page.File.Path }} {{ end }} {{ end }} {{ else }} {{- $url = $href -}} {{ end }} {{ end }} {{- $isExternal := ne (urls.Parse (absURL $url)).Host (urls.Parse site.BaseURL).Host -}} {{- if not $isExternal -}} {{- $url = strings.TrimSuffix "/" $url -}} {{- $ref := "" -}} {{- if not $ref -}} {{- $ref = .Page.GetPage $url -}} {{- end -}} {{- if not $ref }} {{- $segments := split $url "/" -}} {{- if and (hasPrefix $url "/") (gt (len $segments) 1) -}} {{- $prefix := index $segments 1 -}} {{- $page := .Page -}} {{ with index (where site.Sites "Language.Lang" $prefix) 0 }} {{- $path := printf "/%s" (strings.TrimPrefix (printf "/%s/" $prefix) $url) }} {{- $ref = .GetPage $path -}} {{ end }} {{- end -}} {{- end -}} {{- if not $ref -}} {{- errorf "Cannot find page: '%s' at %s" $href .Position -}} {{- $error = true -}} {{- end -}} {{- end -}} {{ with $anchor }} {{ $url = printf "%s#%s" $url .}} {{ end }} {{- if not $error -}} {{ partial "utilities/link.html" (dict "destination" $url "text" $text "cue" $cue "tab" $tab "case" $case "class" $class "page" .Page) }} {{- end -}}