{{- $destination := .Destination -}} {{- $url := urls.Parse .Destination -}} {{- $isRemote := $url.IsAbs -}} {{- $isFragment := strings.HasPrefix .Destination "#" -}} {{- if and (not $isRemote) (not $isFragment) -}} {{- $path := strings.TrimPrefix "./" $url.Path -}} {{- $path = strings.TrimSuffix ".md" $path -}} {{- $path = strings.TrimSuffix "/_index" $path -}} {{- with (.Page.GetPage $path) -}} {{- $destination = .RelPermalink -}} {{- else with (.Page.Resources.Get $path) -}} {{- $destination = .RelPermalink -}} {{- else with (resources.Get $path) -}} {{- $destination = .RelPermalink -}} {{- else -}} {{- $mode := .Page.Site.Params.BookPortableLinks -}} {{- $message := printf "Image reference '%s' not found in '%s'" .Destination .Page.RelPermalink -}} {{- if eq $mode "warning" -}} {{- warnf $message -}} {{- else if eq $mode "error" -}} {{- errorf $message -}} {{- end -}} {{- end -}} {{- with $url.RawQuery -}} {{- $destination = print $destination "?" . -}} {{- end -}} {{- with $url.Fragment -}} {{- $destination = print $destination "#" . -}} {{- end -}} {{- end -}} {{- return $destination -}}