summaryrefslogtreecommitdiff
path: root/modules/caddyhttp/templates/tplcontext.go
diff options
context:
space:
mode:
authorTyler Kropp <tyler@tylerkropp.xyz>2022-05-02 16:55:34 -0400
committerGitHub <noreply@github.com>2022-05-02 14:55:34 -0600
commite84e19a04eefccc743f0d397efe49ff42626f4b3 (patch)
tree2941ffe7c7e49572fed9b86cedc7da8c2bdfac76 /modules/caddyhttp/templates/tplcontext.go
parent4a223f52038cb77bbf97ca3f3345550dea4e12d8 (diff)
templates: Add custom template function registration (#4757)
* Add custom template function registration * Rename TemplateFunctions to CustomFunctions * Add documentation * Document CustomFunctions interface * Preallocate custom functions map list * Fix interface name in error message
Diffstat (limited to 'modules/caddyhttp/templates/tplcontext.go')
-rw-r--r--modules/caddyhttp/templates/tplcontext.go14
1 files changed, 10 insertions, 4 deletions
diff --git a/modules/caddyhttp/templates/tplcontext.go b/modules/caddyhttp/templates/tplcontext.go
index 4f3cbf5..7843455 100644
--- a/modules/caddyhttp/templates/tplcontext.go
+++ b/modules/caddyhttp/templates/tplcontext.go
@@ -40,10 +40,11 @@ import (
// TemplateContext is the TemplateContext with which HTTP templates are executed.
type TemplateContext struct {
- Root http.FileSystem
- Req *http.Request
- Args []interface{} // defined by arguments to funcInclude
- RespHeader WrappedHeader
+ Root http.FileSystem
+ Req *http.Request
+ Args []interface{} // defined by arguments to funcInclude
+ RespHeader WrappedHeader
+ CustomFuncs []template.FuncMap // functions added by plugins
config *Templates
tpl *template.Template
@@ -62,6 +63,11 @@ func (c *TemplateContext) NewTemplate(tplName string) *template.Template {
// add sprig library
c.tpl.Funcs(sprigFuncMap)
+ // add all custom functions
+ for _, funcMap := range c.CustomFuncs {
+ c.tpl.Funcs(funcMap)
+ }
+
// add our own library
c.tpl.Funcs(template.FuncMap{
"include": c.funcInclude,