mirror of
https://github.com/caddyserver/caddy.git
synced 2025-10-19 07:43:17 +00:00
map: Coerce val to string, fix #4987
Also prevent infinite recursion, and enforce placeholder syntax.
This commit is contained in:
parent
7d5108d132
commit
73d4a8ba02
5 changed files with 38 additions and 35 deletions
12
replacer.go
12
replacer.go
|
@ -78,11 +78,11 @@ func (r *Replacer) Get(variable string) (any, bool) {
|
|||
return nil, false
|
||||
}
|
||||
|
||||
// GetString is the same as Get, but coerces the value to a
|
||||
// string representation.
|
||||
// GetString is the same as Get, but coerces the value to a
|
||||
// string representation as efficiently as possible.
|
||||
func (r *Replacer) GetString(variable string) (string, bool) {
|
||||
s, found := r.Get(variable)
|
||||
return toString(s), found
|
||||
return ToString(s), found
|
||||
}
|
||||
|
||||
// Delete removes a variable with a static value
|
||||
|
@ -204,7 +204,7 @@ scan:
|
|||
}
|
||||
|
||||
// convert val to a string as efficiently as possible
|
||||
valStr := toString(val)
|
||||
valStr := ToString(val)
|
||||
|
||||
// write the value; if it's empty, either return
|
||||
// an error or write a default value
|
||||
|
@ -230,7 +230,9 @@ scan:
|
|||
return sb.String(), nil
|
||||
}
|
||||
|
||||
func toString(val any) string {
|
||||
// ToString returns val as a string, as efficiently as possible.
|
||||
// EXPERIMENTAL: may be changed or removed later.
|
||||
func ToString(val any) string {
|
||||
switch v := val.(type) {
|
||||
case nil:
|
||||
return ""
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue