mirror of
https://github.com/caddyserver/caddy.git
synced 2025-01-06 22:40:31 -05:00
templates: Implement placeholders function (#3324)
* caddyhttp, httpcaddyfile: Implement placeholders in template * caddyhttp, httpcaddyfile: Remove support for placeholder shorthands in templates * Update modules/caddyhttp/templates/templates.go updates JSON doc Co-authored-by: Matt Holt <mholt@users.noreply.github.com> * Update modules/caddyhttp/templates/tplcontext.go Co-authored-by: Matt Holt <mholt@users.noreply.github.com> Co-authored-by: Matt Holt <mholt@users.noreply.github.com>
This commit is contained in:
parent
28d870c193
commit
2bc30bb780
2 changed files with 18 additions and 0 deletions
|
@ -64,6 +64,16 @@ func init() {
|
|||
// {{env "VAR_NAME"}}
|
||||
// ```
|
||||
//
|
||||
// ##### `placeholder`
|
||||
//
|
||||
// Gets an [placeholder variable](/docs/conventions#placeholders).
|
||||
// The braces (`{}`) have to be omitted.
|
||||
//
|
||||
// ```
|
||||
// {{placeholder "http.request.uri.path"}}
|
||||
// {{placeholder "http.error.status_code"}}
|
||||
// ```
|
||||
//
|
||||
// ##### `.Host`
|
||||
//
|
||||
// Returns the hostname portion (no port) of the Host header of the HTTP request.
|
||||
|
|
|
@ -29,6 +29,7 @@ import (
|
|||
|
||||
"github.com/Masterminds/sprig/v3"
|
||||
"github.com/alecthomas/chroma/formatters/html"
|
||||
"github.com/caddyserver/caddy/v2"
|
||||
"github.com/caddyserver/caddy/v2/modules/caddyhttp"
|
||||
"github.com/yuin/goldmark"
|
||||
highlighting "github.com/yuin/goldmark-highlighting"
|
||||
|
@ -152,6 +153,7 @@ func (c templateContext) executeTemplateInBuffer(tplName string, buf *bytes.Buff
|
|||
"splitFrontMatter": c.funcSplitFrontMatter,
|
||||
"listFiles": c.funcListFiles,
|
||||
"env": c.funcEnv,
|
||||
"placeholder": c.placeholder,
|
||||
})
|
||||
|
||||
parsedTpl, err := tpl.Parse(buf.String())
|
||||
|
@ -164,6 +166,12 @@ func (c templateContext) executeTemplateInBuffer(tplName string, buf *bytes.Buff
|
|||
return parsedTpl.Execute(buf, c)
|
||||
}
|
||||
|
||||
func (c templateContext) placeholder(name string) string {
|
||||
repl := c.Req.Context().Value(caddy.ReplacerCtxKey).(*caddy.Replacer)
|
||||
value, _ := repl.GetString(name)
|
||||
return value
|
||||
}
|
||||
|
||||
func (templateContext) funcEnv(varName string) string {
|
||||
return os.Getenv(varName)
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue