diff options
Diffstat (limited to 'themes/hugo-book/layouts/_default/_markup/render-link.html')
| -rw-r--r-- | themes/hugo-book/layouts/_default/_markup/render-link.html | 29 |
1 files changed, 29 insertions, 0 deletions
diff --git a/themes/hugo-book/layouts/_default/_markup/render-link.html b/themes/hugo-book/layouts/_default/_markup/render-link.html new file mode 100644 index 0000000..288d81c --- /dev/null +++ b/themes/hugo-book/layouts/_default/_markup/render-link.html @@ -0,0 +1,29 @@ +{{- if .Page.Site.Params.BookPortableLinks -}} + {{- template "portable-link" . -}} +{{- else -}} + <a href="{{ .Destination | safeURL }}"{{ with .Title}} title="{{ . }}"{{ end }}>{{ .Text | safeHTML }}</a> +{{- end -}} + +{{- define "portable-link" -}} + {{- $destination := .Destination }} + {{- $isRemote := or (in .Destination ":") (strings.HasPrefix .Destination "//") }} + {{- $isFragment := strings.HasPrefix .Destination "#" }} + {{- if and (not $isRemote) (not $isFragment) }} + {{- $url := urls.Parse .Destination }} + {{- $path := strings.TrimSuffix "/_index.md" $url.Path }} + {{- $path = strings.TrimSuffix "/_index" $path }} + {{- $path = strings.TrimSuffix ".md" $path }} + {{- $page := .Page.GetPage $path }} + {{- if $page }} + {{- $destination = $page.RelPermalink }} + {{- if $url.Fragment }} + {{- $destination = print $destination "#" $url.Fragment }} + {{- end }} + {{- else if fileExists (print .Page.File.Dir .Destination) }} + <!-- Nothing --> + {{- else -}} + {{- warnf "Page '%s' not found in '%s'" .Destination .Page.File }} + {{- end }} + {{- end }} + <a href="{{ $destination | safeURL }}"{{ with .Title}} title="{{ . }}"{{ end }}>{{ .Text | safeHTML }}</a> +{{- end -}} |
