tpl/urls: Add anchorize template func - hugo - [fork] hugo port for 9front
(HTM) git clone git@git.drkhsh.at/hugo.git
(DIR) Log
(DIR) Files
(DIR) Refs
(DIR) Submodules
(DIR) README
(DIR) LICENSE
---
(DIR) commit 4dba6ce15ae9b5208b1e2d68c96d7b1dce0a07ab
(DIR) parent 880ca19f209e68e6a8daa6686b361515ecacc91e
(HTM) Author: Bjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com>
Date: Sun, 15 Apr 2018 23:17:50 +0200
tpl/urls: Add anchorize template func
Diffstat:
M tpl/urls/init.go | 7 +++++++
M tpl/urls/urls.go | 12 ++++++++++++
2 files changed, 19 insertions(+), 0 deletions(-)
---
(DIR) diff --git a/tpl/urls/init.go b/tpl/urls/init.go
@@ -59,6 +59,13 @@ func init() {
[][2]string{},
)
+ ns.AddMethodMapping(ctx.Anchorize,
+ []string{"anchorize"},
+ [][2]string{
+ {`{{ "This is a title" | anchorize }}`, `this-is-a-title`},
+ },
+ )
+
return ns
}
(DIR) diff --git a/tpl/urls/urls.go b/tpl/urls/urls.go
@@ -16,6 +16,9 @@ package urls
import (
"errors"
"fmt"
+
+ "github.com/russross/blackfriday"
+
"html/template"
"net/url"
@@ -78,6 +81,15 @@ func (ns *Namespace) URLize(a interface{}) (string, error) {
return ns.deps.PathSpec.URLize(s), nil
}
+// Anchorize creates sanitized anchor names that are compatible with Blackfriday.
+func (ns *Namespace) Anchorize(a interface{}) (string, error) {
+ s, err := cast.ToStringE(a)
+ if err != nil {
+ return "", nil
+ }
+ return blackfriday.SanitizedAnchorName(s), nil
+}
+
type reflinker interface {
Ref(refs ...string) (string, error)
RelRef(refs ...string) (string, error)