From 4a3463463fe55be8f57b1ef2217f9dd99ac9b839 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bj=C3=B8rn=20Erik=20Pedersen?= Date: Sun, 30 Apr 2017 23:06:28 +0200 Subject: [PATCH] tpl/safe: Make it a package that stands on its own See #3042 --- tpl/safe/init.go | 54 ++++++++++++++++++++++++++++++ tpl/tplimpl/templateFuncster.go | 3 -- tpl/tplimpl/template_funcs.go | 10 +----- tpl/tplimpl/template_funcs_test.go | 10 ------ 4 files changed, 55 insertions(+), 22 deletions(-) create mode 100644 tpl/safe/init.go 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&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&Man -safeHTML: Bat&Man -safeHTML: Bat&Man -safeJS: (1*2) -safeURL: http://gohugo.io strings.TrimPrefix: , world! time: 2015 urlize: bat-man