Add portable links, requires hugo 0.62

soper-book
Alex Shpak 2020-03-07 18:47:16 +01:00
parent c217876059
commit 289a3f456e
7 changed files with 68 additions and 3 deletions

View File

@ -25,7 +25,7 @@ jobs:
- name: Install Hugo - name: Install Hugo
run: | run: |
wget "https://github.com/gohugoio/hugo/releases/download/v0.60.0/hugo_extended_0.60.0_Linux-64bit.deb" -O /tmp/hugo.deb wget "https://github.com/gohugoio/hugo/releases/download/v0.62.0/hugo_extended_0.62.0_Linux-64bit.deb" -O /tmp/hugo.deb
sudo dpkg -i /tmp/hugo.deb sudo dpkg -i /tmp/hugo.deb
- name: Run Hugo - name: Run Hugo

View File

@ -1,6 +1,6 @@
# Hugo Book Theme # Hugo Book Theme
[![Hugo](https://img.shields.io/badge/hugo-0.60-blue.svg)](https://gohugo.io) [![Hugo](https://img.shields.io/badge/hugo-0.62-blue.svg)](https://gohugo.io)
[![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](LICENSE) [![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](LICENSE)
### [Hugo](https://gohugo.io) documentation theme as simple as plain book ### [Hugo](https://gohugo.io) documentation theme as simple as plain book
@ -178,6 +178,12 @@ disableKinds = ['taxonomy', 'taxonomyTerm']
# See https://gohugo.io/content-management/comments/#configure-disqus # See https://gohugo.io/content-management/comments/#configure-disqus
# Can be overwritten by same param in page frontmatter # Can be overwritten by same param in page frontmatter
BookComments = true BookComments = true
# /!\ This is an experimental feature, might be removed or changed at any time
# (Optional, experimental, default false) Enables portable links and link checks in markdown pages.
# Portable links meant to work with text editors and let you write markdown without {{< relref >}} shortcode
# Theme will print warning if page referenced in markdown does not exists.
BookPortableLinks = true
``` ```
### Multi-Language Support ### Multi-Language Support

View File

@ -90,3 +90,9 @@ enableGitInfo = true
# See https://gohugo.io/content-management/comments/#configure-disqus # See https://gohugo.io/content-management/comments/#configure-disqus
# Can be overwritten by same param in page frontmatter # Can be overwritten by same param in page frontmatter
BookComments = true BookComments = true
# /!\ This is an experimental feature, might be removed or changed at any time
# (Optional, experimental, default false) Enables portable links and link checks in markdown pages.
# Portable links meant to work with text editors and let you write markdown without {{< relref >}} shortcode
# Theme will print warning if page referenced in markdown does not exists.
BookPortableLinks = true

View File

@ -86,3 +86,9 @@ params:
# See https://gohugo.io/content-management/comments/#configure-disqus # See https://gohugo.io/content-management/comments/#configure-disqus
# Can be overwritten by same param in page frontmatter # Can be overwritten by same param in page frontmatter
BookComments: true BookComments: true
# /!\ This is an experimental feature, might be removed or changed at any time
# (Optional, experimental, default false) Enables portable links and link checks in markdown pages.
# Portable links meant to work with text editors and let you write markdown without {{< relref >}} shortcode
# Theme will print warning if page referenced in markdown does not exists.
BookPortableLinks: true

View File

@ -0,0 +1,19 @@
{{ if .Page.Site.Params.BookPortableLinks }}
{{- template "portable-image" . -}}
{{ else }}
<img src="{{ .Destination | safeURL }}" alt="{{ .Text }}" {{ with .Title }}title="{{ . }}"{{ end }}/>
{{ end }}
{{- define "portable-image" -}}
{{- $isRemote := or (in .Destination "://") (strings.HasPrefix .Destination "//") }}
{{- if not $isRemote }}
{{- $path := print .Page.File.Dir .Destination }}
{{- if strings.HasPrefix .Destination "/" }}
{{- $path = print "/static" .Destination }}
{{- end }}
{{- if not (fileExists $path) }}
{{- warnf "Image '%s' not found in '%s'" .Destination .Page.File }}
{{- end }}
{{- end }}
<img src="{{ .Destination | safeURL }}" alt="{{ .Text }}" {{ with .Title }}title="{{ . }}"{{ end }}/>
{{- end -}}

View File

@ -0,0 +1,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 -}}

View File

@ -8,7 +8,7 @@ description = "Hugo documentation theme as simple as plain book"
homepage = "https://github.com/alex-shpak/hugo-book" homepage = "https://github.com/alex-shpak/hugo-book"
tags = ["responsive", "clean", "documentation", "docs", "flexbox", "search", "mobile", "multilingual", "disqus"] tags = ["responsive", "clean", "documentation", "docs", "flexbox", "search", "mobile", "multilingual", "disqus"]
features = [] features = []
min_version = "0.60" min_version = "0.62"
[author] [author]
name = "Alex Shpak" name = "Alex Shpak"