From 55f90a3a0dad6eb9fffd49605946fc88ab4134ad Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bj=C3=B8rn=20Erik=20Pedersen?= Date: Sun, 30 Apr 2017 23:16:54 +0200 Subject: [PATCH] tpl/transform: Make it a package that stands on its own See #3042 --- tpl/tplimpl/templateFuncster.go | 7 ++--- tpl/tplimpl/template_funcs.go | 10 ++---- tpl/tplimpl/template_funcs_test.go | 6 ---- tpl/transform/init.go | 50 ++++++++++++++++++++++++++++++ 4 files changed, 54 insertions(+), 19 deletions(-) create mode 100644 tpl/transform/init.go diff --git a/tpl/tplimpl/templateFuncster.go b/tpl/tplimpl/templateFuncster.go index c7cba5d98..b40de5307 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/transform" "github.com/spf13/hugo/tpl/urls" ) @@ -31,8 +30,7 @@ type templateFuncster struct { cachedPartials partialCache // Namespaces - transform *transform.Namespace - urls *urls.Namespace + urls *urls.Namespace *deps.Deps } @@ -43,8 +41,7 @@ func newTemplateFuncster(deps *deps.Deps) *templateFuncster { cachedPartials: partialCache{p: make(map[string]interface{})}, // Namespaces - transform: transform.New(deps), - urls: urls.New(deps), + urls: urls.New(deps), } } diff --git a/tpl/tplimpl/template_funcs.go b/tpl/tplimpl/template_funcs.go index 0c2069603..e5303a8d7 100644 --- a/tpl/tplimpl/template_funcs.go +++ b/tpl/tplimpl/template_funcs.go @@ -37,6 +37,7 @@ import ( _ "github.com/spf13/hugo/tpl/safe" _ "github.com/spf13/hugo/tpl/strings" _ "github.com/spf13/hugo/tpl/time" + _ "github.com/spf13/hugo/tpl/transform" ) // Get retrieves partial output from the cache based upon the partial name. @@ -91,20 +92,13 @@ func (t *templateFuncster) initFuncMap() { funcMap := template.FuncMap{ // Namespaces //"time": t.time.Namespace, - "transform": t.transform.Namespace, - "urls": t.urls.Namespace, + "urls": t.urls.Namespace, "absURL": t.urls.AbsURL, "absLangURL": t.urls.AbsLangURL, - "emojify": t.transform.Emojify, - "highlight": t.transform.Highlight, - "htmlEscape": t.transform.HTMLEscape, - "htmlUnescape": t.transform.HTMLUnescape, "int": func(v interface{}) (int, error) { return cast.ToIntE(v) }, - "markdownify": t.transform.Markdownify, "partial": t.partial, "partialCached": t.partialCached, - "plainify": t.transform.Plainify, "print": fmt.Sprint, "printf": fmt.Sprintf, "println": fmt.Sprintln, diff --git a/tpl/tplimpl/template_funcs_test.go b/tpl/tplimpl/template_funcs_test.go index dad3d0342..5ee11e16a 100644 --- a/tpl/tplimpl/template_funcs_test.go +++ b/tpl/tplimpl/template_funcs_test.go @@ -128,7 +128,6 @@ absURL: {{ "mystyle.css" | absURL }} absURL: {{ 42 | absURL }} crypto.MD5: {{ crypto.MD5 "Hello world, gophers!" }} dateFormat: {{ dateFormat "Monday, Jan 2, 2006" "2015-01-21" }} -emojify: {{ "I :heart: Hugo" | emojify }} htmlEscape 1: {{ htmlEscape "Cathal Garvey & The Sunshine Band " | safeHTML}} htmlEscape 2: {{ htmlEscape "Cathal Garvey & The Sunshine Band "}} htmlUnescape 1: {{htmlUnescape "Cathal Garvey & The Sunshine Band <cathal@foo.bar>" | safeHTML}} @@ -136,11 +135,9 @@ htmlUnescape 2: {{"Cathal Garvey &amp; The Sunshine Band &lt;cathal@foo. htmlUnescape 3: {{"Cathal Garvey &amp; The Sunshine Band &lt;cathal@foo.bar&gt;" | htmlUnescape | htmlUnescape }} htmlUnescape 4: {{ htmlEscape "Cathal Garvey & The Sunshine Band " | htmlUnescape | safeHTML }} htmlUnescape 5: {{ htmlUnescape "Cathal Garvey & The Sunshine Band <cathal@foo.bar>" | htmlEscape | safeHTML }} -markdownify: {{ .Title | markdownify}} print: {{ print "works!" }} printf: {{ printf "%s!" "works" }} println: {{ println "works!" -}} -plainify: {{ plainify "Hello world, gophers!" }} relLangURL: {{ "index.html" | relLangURL }} relURL 1: {{ "http://gohugo.io/" | relURL }} relURL 2: {{ "mystyle.css" | relURL }} @@ -155,7 +152,6 @@ absURL: http://mysite.com/hugo/mystyle.css absURL: http://mysite.com/hugo/42 crypto.MD5: b3029f756f98f79e7f1b7f1d1f0dd53b dateFormat: Wednesday, Jan 21, 2015 -emojify: I ❤️ Hugo htmlEscape 1: Cathal Garvey & The Sunshine Band <cathal@foo.bar> htmlEscape 2: Cathal Garvey &amp; The Sunshine Band &lt;cathal@foo.bar&gt; htmlUnescape 1: Cathal Garvey & The Sunshine Band @@ -163,11 +159,9 @@ htmlUnescape 2: Cathal Garvey & The Sunshine Band htmlUnescape 3: Cathal Garvey & The Sunshine Band <cathal@foo.bar> htmlUnescape 4: Cathal Garvey & The Sunshine Band htmlUnescape 5: Cathal Garvey & The Sunshine Band <cathal@foo.bar> -markdownify: BatMan print: works! printf: works! println: works! -plainify: Hello world, gophers! relLangURL: /hugo/en/index.html relURL 1: http://gohugo.io/ relURL 2: /hugo/mystyle.css diff --git a/tpl/transform/init.go b/tpl/transform/init.go new file mode 100644 index 000000000..3057cf068 --- /dev/null +++ b/tpl/transform/init.go @@ -0,0 +1,50 @@ +// 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 transform + +import ( + "github.com/spf13/hugo/deps" + "github.com/spf13/hugo/tpl/internal" +) + +const name = "transform" + +func init() { + f := func(d *deps.Deps) *internal.TemplateFuncsNamespace { + ctx := New(d) + + examples := [][2]string{ + {`{{ "I :heart: Hugo" | emojify }}`, `I ❤️ Hugo`}, + {`{{ .Title | markdownify}}`, `BatMan`}, + {`{{ plainify "Hello world, gophers!" }}`, `Hello world, gophers!`}, + } + + return &internal.TemplateFuncsNamespace{ + Name: name, + Context: func() interface{} { return ctx }, + Aliases: map[string]interface{}{ + "emojify": ctx.Emojify, + "highlight": ctx.Highlight, + "htmlEscape": ctx.HTMLEscape, + "htmlUnescape": ctx.HTMLUnescape, + "markdownify": ctx.Markdownify, + "plainify": ctx.Plainify, + }, + Examples: examples, + } + + } + + internal.AddTemplateFuncsNamespace(f) +}