diff options
author | Bjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com> | 2017-05-01 18:40:34 +0200 |
---|---|---|
committer | Bjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com> | 2017-05-01 21:44:15 +0200 |
commit | 690b0f8ff5795318dfa3834a5a75d6623e7d934a (patch) | |
tree | 1112306f4c6fecc0966d880dec702c3804633deb /tpl/strings | |
parent | e2b067f0504ba41ef45786e2f83d7002bd13a7eb (diff) |
tpl: Add docshelper for template funcs
And fix some other minor related issues.
Updates #3418
Diffstat (limited to 'tpl/strings')
-rw-r--r-- | tpl/strings/init.go | 152 |
1 files changed, 108 insertions, 44 deletions
diff --git a/tpl/strings/init.go b/tpl/strings/init.go index 8e3dfdef2..9f33bd176 100644 --- a/tpl/strings/init.go +++ b/tpl/strings/init.go @@ -24,54 +24,118 @@ func init() { f := func(d *deps.Deps) *internal.TemplateFuncsNamespace { ctx := New(d) - examples := [][2]string{ - {`{{chomp "<p>Blockhead</p>\n" }}`, `<p>Blockhead</p>`}, - { - `{{ findRE "[G|g]o" "Hugo is a static side generator written in Go." "1" }}`, - `[go]`}, - {`{{ hasPrefix "Hugo" "Hu" }}`, `true`}, - {`{{ hasPrefix "Hugo" "Fu" }}`, `false`}, - {`{{lower "BatMan"}}`, `batman`}, - { - `{{ replace "Batman and Robin" "Robin" "Catwoman" }}`, - `Batman and Catwoman`}, - { - `{{ "http://gohugo.io/docs" | replaceRE "^https?://([^/]+).*" "$1" }}`, - `gohugo.io`}, - {`{{slicestr "BatMan" 0 3}}`, `Bat`}, - {`{{slicestr "BatMan" 3}}`, `Man`}, - {`{{substr "BatMan" 0 -3}}`, `Bat`}, - {`{{substr "BatMan" 3 3}}`, `Man`}, - {`{{title "Bat man"}}`, `Bat Man`}, - {`{{ trim "++Batman--" "+-" }}`, `Batman`}, - {`{{ "this is a very long text" | truncate 10 " ..." }}`, `this is a ...`}, - {`{{ "With [Markdown](/markdown) inside." | markdownify | truncate 14 }}`, `With <a href="/markdown">Markdown …</a>`}, - {`{{upper "BatMan"}}`, `BATMAN`}, - } - - return &internal.TemplateFuncsNamespace{ + ns := &internal.TemplateFuncsNamespace{ Name: name, Context: func() interface{} { return ctx }, - Aliases: map[string]interface{}{ - "chomp": ctx.Chomp, - "countrunes": ctx.CountRunes, - "countwords": ctx.CountWords, - "findRE": ctx.FindRE, - "hasPrefix": ctx.HasPrefix, - "lower": ctx.ToLower, - "replace": ctx.Replace, - "replaceRE": ctx.ReplaceRE, - "slicestr": ctx.SliceString, - "split": ctx.Split, - "substr": ctx.Substr, - "title": ctx.Title, - "trim": ctx.Trim, - "truncate": ctx.Truncate, - "upper": ctx.ToUpper, - }, - Examples: examples, } + ns.AddMethodMapping(ctx.Chomp, + []string{"chomp"}, + [][2]string{ + {`{{chomp "<p>Blockhead</p>\n" }}`, `<p>Blockhead</p>`}, + }, + ) + + ns.AddMethodMapping(ctx.CountRunes, + []string{"countrunes"}, + [][2]string{}, + ) + + ns.AddMethodMapping(ctx.CountWords, + []string{"countwords"}, + [][2]string{}, + ) + + ns.AddMethodMapping(ctx.FindRE, + []string{"findRE"}, + [][2]string{ + { + `{{ findRE "[G|g]o" "Hugo is a static side generator written in Go." "1" }}`, + `[go]`}, + }, + ) + + ns.AddMethodMapping(ctx.HasPrefix, + []string{"hasPrefix"}, + [][2]string{ + {`{{ hasPrefix "Hugo" "Hu" }}`, `true`}, + {`{{ hasPrefix "Hugo" "Fu" }}`, `false`}, + }, + ) + + ns.AddMethodMapping(ctx.ToLower, + []string{"lower"}, + [][2]string{ + {`{{lower "BatMan"}}`, `batman`}, + }, + ) + + ns.AddMethodMapping(ctx.Replace, + []string{"replace"}, + [][2]string{ + { + `{{ replace "Batman and Robin" "Robin" "Catwoman" }}`, + `Batman and Catwoman`}, + }, + ) + + ns.AddMethodMapping(ctx.ReplaceRE, + []string{"replaceRE"}, + [][2]string{}, + ) + + ns.AddMethodMapping(ctx.SliceString, + []string{"slicestr"}, + [][2]string{ + {`{{slicestr "BatMan" 0 3}}`, `Bat`}, + {`{{slicestr "BatMan" 3}}`, `Man`}, + }, + ) + + ns.AddMethodMapping(ctx.Split, + []string{"split"}, + [][2]string{}, + ) + + ns.AddMethodMapping(ctx.Substr, + []string{"substr"}, + [][2]string{ + {`{{substr "BatMan" 0 -3}}`, `Bat`}, + {`{{substr "BatMan" 3 3}}`, `Man`}, + }, + ) + + ns.AddMethodMapping(ctx.Trim, + []string{"trim"}, + [][2]string{ + {`{{ trim "++Batman--" "+-" }}`, `Batman`}, + }, + ) + + ns.AddMethodMapping(ctx.Title, + []string{"title"}, + [][2]string{ + {`{{title "Bat man"}}`, `Bat Man`}, + }, + ) + + ns.AddMethodMapping(ctx.Truncate, + []string{"truncate"}, + [][2]string{ + {`{{ "this is a very long text" | truncate 10 " ..." }}`, `this is a ...`}, + {`{{ "With [Markdown](/markdown) inside." | markdownify | truncate 14 }}`, `With <a href="/markdown">Markdown …</a>`}, + }, + ) + + ns.AddMethodMapping(ctx.ToUpper, + []string{"upper"}, + [][2]string{ + {`{{upper "BatMan"}}`, `BATMAN`}, + }, + ) + + return ns + } internal.AddTemplateFuncsNamespace(f) |