tpl: Add docshelper for template funcs

And fix some other minor related issues.

Updates #3418
This commit is contained in:
Bjørn Erik Pedersen
2017-05-01 18:40:34 +02:00
parent e2b067f050
commit 690b0f8ff5
25 changed files with 2064 additions and 347 deletions

View File

@@ -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)