summaryrefslogtreecommitdiffstats
path: root/tpl
diff options
context:
space:
mode:
authorBjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com>2017-04-30 23:06:28 +0200
committerBjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com>2017-05-01 15:13:41 +0200
commit4a3463463fe55be8f57b1ef2217f9dd99ac9b839 (patch)
treed1a4af0529af2a31c8fa82307e68c24e08a04aca /tpl
parentb958c0c1091574d0bd8118045fdf421c7d946893 (diff)
tpl/safe: Make it a package that stands on its own
See #3042
Diffstat (limited to 'tpl')
-rw-r--r--tpl/safe/init.go54
-rw-r--r--tpl/tplimpl/templateFuncster.go3
-rw-r--r--tpl/tplimpl/template_funcs.go10
-rw-r--r--tpl/tplimpl/template_funcs_test.go10
4 files changed, 55 insertions, 22 deletions
diff --git a/tpl/safe/init.go b/tpl/safe/init.go
new file mode 100644
index 000000000..fc47c66a7
--- /dev/null
+++ b/tpl/safe/init.go
@@ -0,0 +1,54 @@
+// Copyright 2017 The Hugo Authors. All rights reserved.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package safe
+
+import (
+ "github.com/spf13/hugo/deps"
+ "github.com/spf13/hugo/tpl/internal"
+)
+
+const name = "safe"
+
+func init() {
+ f := func(d *deps.Deps) *internal.TemplateFuncsNamespace {
+ ctx := New()
+
+ examples := [][2]string{
+ {`{{ "Bat&Man" | safeCSS | safeCSS }}`, `Bat&amp;Man`},
+ {`{{ "Bat&Man" | safeHTML | safeHTML }}`, `Bat&Man`},
+ {`{{ "Bat&Man" | safeHTML }}`, `Bat&Man`},
+ {`{{ "(1*2)" | safeJS | safeJS }}`, `(1*2)`},
+ {`{{ "http://gohugo.io" | safeURL | safeURL }}`, `http://gohugo.io`},
+ }
+
+ return &internal.TemplateFuncsNamespace{
+ Name: name,
+ Context: func() interface{} { return ctx },
+ Aliases: map[string]interface{}{
+ "safeCSS": ctx.CSS,
+ "safeHTML": ctx.HTML,
+ "safeHTMLAttr": ctx.HTMLAttr,
+ "safeJS": ctx.JS,
+ "safeJSStr": ctx.JSStr,
+ "safeURL": ctx.URL,
+ "sanitizeURL": ctx.SanitizeURL,
+ "sanitizeurl": ctx.SanitizeURL,
+ },
+ Examples: examples,
+ }
+
+ }
+
+ internal.AddTemplateFuncsNamespace(f)
+}
diff --git a/tpl/tplimpl/templateFuncster.go b/tpl/tplimpl/templateFuncster.go
index 747ec4930..b90fb01c1 100644
--- a/tpl/tplimpl/templateFuncster.go
+++ b/tpl/tplimpl/templateFuncster.go
@@ -21,7 +21,6 @@ import (
bp "github.com/spf13/hugo/bufferpool"
"github.com/spf13/hugo/deps"
- "github.com/spf13/hugo/tpl/safe"
"github.com/spf13/hugo/tpl/time"
"github.com/spf13/hugo/tpl/transform"
"github.com/spf13/hugo/tpl/urls"
@@ -33,7 +32,6 @@ type templateFuncster struct {
cachedPartials partialCache
// Namespaces
- safe *safe.Namespace
time *time.Namespace
transform *transform.Namespace
urls *urls.Namespace
@@ -47,7 +45,6 @@ func newTemplateFuncster(deps *deps.Deps) *templateFuncster {
cachedPartials: partialCache{p: make(map[string]interface{})},
// Namespaces
- safe: safe.New(),
time: time.New(),
transform: transform.New(deps),
urls: urls.New(deps),
diff --git a/tpl/tplimpl/template_funcs.go b/tpl/tplimpl/template_funcs.go
index 8179d9cbf..7ebc14c04 100644
--- a/tpl/tplimpl/template_funcs.go
+++ b/tpl/tplimpl/template_funcs.go
@@ -34,6 +34,7 @@ import (
_ "github.com/spf13/hugo/tpl/lang"
_ "github.com/spf13/hugo/tpl/math"
_ "github.com/spf13/hugo/tpl/os"
+ _ "github.com/spf13/hugo/tpl/safe"
_ "github.com/spf13/hugo/tpl/strings"
)
@@ -88,7 +89,6 @@ func (t *templateFuncster) partialCached(name string, context interface{}, varia
func (t *templateFuncster) initFuncMap() {
funcMap := template.FuncMap{
// Namespaces
- "safe": t.safe.Namespace,
//"time": t.time.Namespace,
"transform": t.transform.Namespace,
"urls": t.urls.Namespace,
@@ -113,14 +113,6 @@ func (t *templateFuncster) initFuncMap() {
"relURL": t.urls.RelURL,
"relLangURL": t.urls.RelLangURL,
"relref": t.urls.RelRef,
- "safeCSS": t.safe.CSS,
- "safeHTML": t.safe.HTML,
- "safeHTMLAttr": t.safe.HTMLAttr,
- "safeJS": t.safe.JS,
- "safeJSStr": t.safe.JSStr,
- "safeURL": t.safe.URL,
- "sanitizeURL": t.safe.SanitizeURL,
- "sanitizeurl": t.safe.SanitizeURL,
"string": func(v interface{}) (string, error) { return cast.ToStringE(v) },
"time": t.time.AsTime,
"urlize": t.PathSpec.URLize,
diff --git a/tpl/tplimpl/template_funcs_test.go b/tpl/tplimpl/template_funcs_test.go
index 206f2c8b3..539d50492 100644
--- a/tpl/tplimpl/template_funcs_test.go
+++ b/tpl/tplimpl/template_funcs_test.go
@@ -145,11 +145,6 @@ relLangURL: {{ "index.html" | relLangURL }}
relURL 1: {{ "http://gohugo.io/" | relURL }}
relURL 2: {{ "mystyle.css" | relURL }}
relURL 3: {{ mul 2 21 | relURL }}
-safeCSS: {{ "Bat&Man" | safeCSS | safeCSS }}
-safeHTML: {{ "Bat&Man" | safeHTML | safeHTML }}
-safeHTML: {{ "Bat&Man" | safeHTML }}
-safeJS: {{ "(1*2)" | safeJS | safeJS }}
-safeURL: {{ "http://gohugo.io" | safeURL | safeURL }}
strings.TrimPrefix: {{ strings.TrimPrefix "Goodbye,, world!" "Goodbye," }}
time: {{ (time "2015-01-21").Year }}
urlize: {{ "Bat Man" | urlize }}
@@ -178,11 +173,6 @@ relLangURL: /hugo/en/index.html
relURL 1: http://gohugo.io/
relURL 2: /hugo/mystyle.css
relURL 3: /hugo/42
-safeCSS: Bat&amp;Man
-safeHTML: Bat&Man
-safeHTML: Bat&Man
-safeJS: (1*2)
-safeURL: http://gohugo.io
strings.TrimPrefix: , world!
time: 2015
urlize: bat-man