hugo

Fork of github.com/gohugoio/hugo with reverse pagination support

git clone git://git.shimmy1996.com/hugo.git

init.go (3563B)

    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 ...any) (any, error) { return ctx, nil },
   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 &amp; The Sunshine Band &lt;cathal@foo.bar&gt;`,
   50 				},
   51 				{
   52 					`{{ htmlEscape "Cathal Garvey & The Sunshine Band <cathal@foo.bar>"}}`,
   53 					`Cathal Garvey &amp;amp; The Sunshine Band &amp;lt;cathal@foo.bar&amp;gt;`,
   54 				},
   55 				{
   56 					`{{ htmlEscape "Cathal Garvey & The Sunshine Band <cathal@foo.bar>" | htmlUnescape | safeHTML }}`,
   57 					`Cathal Garvey & The Sunshine Band <cathal@foo.bar>`,
   58 				},
   59 			},
   60 		)
   61 
   62 		ns.AddMethodMapping(ctx.HTMLUnescape,
   63 			[]string{"htmlUnescape"},
   64 			[][2]string{
   65 				{
   66 					`{{ htmlUnescape "Cathal Garvey &amp; The Sunshine Band &lt;cathal@foo.bar&gt;" | safeHTML}}`,
   67 					`Cathal Garvey & The Sunshine Band <cathal@foo.bar>`,
   68 				},
   69 				{
   70 					`{{"Cathal Garvey &amp;amp; The Sunshine Band &amp;lt;cathal@foo.bar&amp;gt;" | htmlUnescape | htmlUnescape | safeHTML}}`,
   71 					`Cathal Garvey & The Sunshine Band <cathal@foo.bar>`,
   72 				},
   73 				{
   74 					`{{"Cathal Garvey &amp;amp; The Sunshine Band &amp;lt;cathal@foo.bar&amp;gt;" | htmlUnescape | htmlUnescape }}`,
   75 					`Cathal Garvey &amp; The Sunshine Band &lt;cathal@foo.bar&gt;`,
   76 				},
   77 				{
   78 					`{{ htmlUnescape "Cathal Garvey &amp; The Sunshine Band &lt;cathal@foo.bar&gt;" | htmlEscape | safeHTML }}`,
   79 					`Cathal Garvey &amp; The Sunshine Band &lt;cathal@foo.bar&gt;`,
   80 				},
   81 			},
   82 		)
   83 
   84 		ns.AddMethodMapping(ctx.Markdownify,
   85 			[]string{"markdownify"},
   86 			[][2]string{
   87 				{`{{ .Title | markdownify}}`, `<strong>BatMan</strong>`},
   88 			},
   89 		)
   90 
   91 		ns.AddMethodMapping(ctx.Plainify,
   92 			[]string{"plainify"},
   93 			[][2]string{
   94 				{`{{ plainify  "Hello <strong>world</strong>, gophers!" }}`, `Hello world, gophers!`},
   95 			},
   96 		)
   97 
   98 		ns.AddMethodMapping(ctx.Remarshal,
   99 			nil,
  100 			[][2]string{
  101 				{`{{ "title = \"Hello World\"" | transform.Remarshal "json" | safeHTML }}`, "{\n   \"title\": \"Hello World\"\n}\n"},
  102 			},
  103 		)
  104 
  105 		ns.AddMethodMapping(ctx.Unmarshal,
  106 			[]string{"unmarshal"},
  107 			[][2]string{
  108 				{`{{ "hello = \"Hello World\"" | transform.Unmarshal }}`, "map[hello:Hello World]"},
  109 				{`{{ "hello = \"Hello World\"" | resources.FromString "data/greetings.toml" | transform.Unmarshal }}`, "map[hello:Hello World]"},
  110 			},
  111 		)
  112 
  113 		return ns
  114 	}
  115 
  116 	internal.AddTemplateFuncsNamespace(f)
  117 }