github.com/shohhei1126/hugo@v0.42.2-0.20180623210752-3d5928889ad7/tpl/transform/init.go (about) 1 // Copyright 2017 The Hugo Authors. All rights reserved. 2 // 3 // Licensed under the Apache License, Version 2.0 (the "License"); 4 // you may not use this file except in compliance with the License. 5 // You may obtain a copy of the License at 6 // http://www.apache.org/licenses/LICENSE-2.0 7 // 8 // Unless required by applicable law or agreed to in writing, software 9 // distributed under the License is distributed on an "AS IS" BASIS, 10 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 11 // See the License for the specific language governing permissions and 12 // limitations under the License. 13 14 package transform 15 16 import ( 17 "github.com/gohugoio/hugo/deps" 18 "github.com/gohugoio/hugo/tpl/internal" 19 ) 20 21 const name = "transform" 22 23 func init() { 24 f := func(d *deps.Deps) *internal.TemplateFuncsNamespace { 25 ctx := New(d) 26 27 ns := &internal.TemplateFuncsNamespace{ 28 Name: name, 29 Context: func(args ...interface{}) interface{} { return ctx }, 30 } 31 32 ns.AddMethodMapping(ctx.Emojify, 33 []string{"emojify"}, 34 [][2]string{ 35 {`{{ "I :heart: Hugo" | emojify }}`, `I ❤️ Hugo`}, 36 }, 37 ) 38 39 ns.AddMethodMapping(ctx.Highlight, 40 []string{"highlight"}, 41 [][2]string{}, 42 ) 43 44 ns.AddMethodMapping(ctx.HTMLEscape, 45 []string{"htmlEscape"}, 46 [][2]string{ 47 { 48 `{{ htmlEscape "Cathal Garvey & The Sunshine Band <cathal@foo.bar>" | safeHTML}}`, 49 `Cathal Garvey & The Sunshine Band <cathal@foo.bar>`}, 50 { 51 `{{ htmlEscape "Cathal Garvey & The Sunshine Band <cathal@foo.bar>"}}`, 52 `Cathal Garvey &amp; The Sunshine Band &lt;cathal@foo.bar&gt;`}, 53 { 54 `{{ htmlEscape "Cathal Garvey & The Sunshine Band <cathal@foo.bar>" | htmlUnescape | safeHTML }}`, 55 `Cathal Garvey & The Sunshine Band <cathal@foo.bar>`}, 56 }, 57 ) 58 59 ns.AddMethodMapping(ctx.HTMLUnescape, 60 []string{"htmlUnescape"}, 61 [][2]string{ 62 { 63 `{{ htmlUnescape "Cathal Garvey & The Sunshine Band <cathal@foo.bar>" | safeHTML}}`, 64 `Cathal Garvey & The Sunshine Band <cathal@foo.bar>`}, 65 { 66 `{{"Cathal Garvey &amp; The Sunshine Band &lt;cathal@foo.bar&gt;" | htmlUnescape | htmlUnescape | safeHTML}}`, 67 `Cathal Garvey & The Sunshine Band <cathal@foo.bar>`}, 68 { 69 `{{"Cathal Garvey &amp; The Sunshine Band &lt;cathal@foo.bar&gt;" | htmlUnescape | htmlUnescape }}`, 70 `Cathal Garvey & The Sunshine Band <cathal@foo.bar>`}, 71 { 72 `{{ htmlUnescape "Cathal Garvey & The Sunshine Band <cathal@foo.bar>" | htmlEscape | safeHTML }}`, 73 `Cathal Garvey & The Sunshine Band <cathal@foo.bar>`}, 74 }, 75 ) 76 77 ns.AddMethodMapping(ctx.Markdownify, 78 []string{"markdownify"}, 79 [][2]string{ 80 {`{{ .Title | markdownify}}`, `<strong>BatMan</strong>`}, 81 }, 82 ) 83 84 ns.AddMethodMapping(ctx.Plainify, 85 []string{"plainify"}, 86 [][2]string{ 87 {`{{ plainify "Hello <strong>world</strong>, gophers!" }}`, `Hello world, gophers!`}, 88 }, 89 ) 90 91 ns.AddMethodMapping(ctx.Remarshal, 92 nil, 93 [][2]string{ 94 {`{{ "title = \"Hello World\"" | transform.Remarshal "json" | safeHTML }}`, "{\n \"title\": \"Hello World\"\n}\n"}, 95 }, 96 ) 97 98 return ns 99 100 } 101 102 internal.AddTemplateFuncsNamespace(f) 103 }