init.go (1554B)
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 inflect 15 16 import ( 17 "github.com/gohugoio/hugo/deps" 18 "github.com/gohugoio/hugo/tpl/internal" 19 ) 20 21 const name = "inflect" 22 23 func init() { 24 f := func(d *deps.Deps) *internal.TemplateFuncsNamespace { 25 ctx := New() 26 27 ns := &internal.TemplateFuncsNamespace{ 28 Name: name, 29 Context: func(args ...any) (any, error) { return ctx, nil }, 30 } 31 32 ns.AddMethodMapping(ctx.Humanize, 33 []string{"humanize"}, 34 [][2]string{ 35 {`{{ humanize "my-first-post" }}`, `My first post`}, 36 {`{{ humanize "myCamelPost" }}`, `My camel post`}, 37 {`{{ humanize "52" }}`, `52nd`}, 38 {`{{ humanize 103 }}`, `103rd`}, 39 }, 40 ) 41 42 ns.AddMethodMapping(ctx.Pluralize, 43 []string{"pluralize"}, 44 [][2]string{ 45 {`{{ "cat" | pluralize }}`, `cats`}, 46 }, 47 ) 48 49 ns.AddMethodMapping(ctx.Singularize, 50 []string{"singularize"}, 51 [][2]string{ 52 {`{{ "cats" | singularize }}`, `cat`}, 53 }, 54 ) 55 56 return ns 57 } 58 59 internal.AddTemplateFuncsNamespace(f) 60 }