summaryrefslogtreecommitdiff
path: root/layouts/_default/_markup/render-link.html
blob: 4995a32d9211df7651010f2a491e5a8f329ac3e5 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
{{- 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 "//") }}
  {{- if not $isRemote }}
    {{- $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 -}}