commit 4dba6ce15ae9b5208b1e2d68c96d7b1dce0a07ab
parent 880ca19f209e68e6a8daa6686b361515ecacc91e
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:
2 files changed, 19 insertions(+), 0 deletions(-)
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
}
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)