mirror of
https://github.com/gohugoio/hugo.git
synced 2025-09-01 22:42:45 +02:00
Pull in the latest code from Go's template packages (#11771)
Fixes #10707 Fixes #11507
This commit is contained in:
committed by
GitHub
parent
14d85ec136
commit
9f978d387f
@@ -8,8 +8,6 @@ import (
|
||||
"bytes"
|
||||
"fmt"
|
||||
"html"
|
||||
|
||||
//"internal/godebug"
|
||||
"io"
|
||||
"regexp"
|
||||
|
||||
@@ -64,22 +62,23 @@ func evalArgs(args ...any) string {
|
||||
|
||||
// funcMap maps command names to functions that render their inputs safe.
|
||||
var funcMap = template.FuncMap{
|
||||
"_html_template_attrescaper": attrEscaper,
|
||||
"_html_template_commentescaper": commentEscaper,
|
||||
"_html_template_cssescaper": cssEscaper,
|
||||
"_html_template_cssvaluefilter": cssValueFilter,
|
||||
"_html_template_htmlnamefilter": htmlNameFilter,
|
||||
"_html_template_htmlescaper": htmlEscaper,
|
||||
"_html_template_jsregexpescaper": jsRegexpEscaper,
|
||||
"_html_template_jsstrescaper": jsStrEscaper,
|
||||
"_html_template_jsvalescaper": jsValEscaper,
|
||||
"_html_template_nospaceescaper": htmlNospaceEscaper,
|
||||
"_html_template_rcdataescaper": rcdataEscaper,
|
||||
"_html_template_srcsetescaper": srcsetFilterAndEscaper,
|
||||
"_html_template_urlescaper": urlEscaper,
|
||||
"_html_template_urlfilter": urlFilter,
|
||||
"_html_template_urlnormalizer": urlNormalizer,
|
||||
"_eval_args_": evalArgs,
|
||||
"_html_template_attrescaper": attrEscaper,
|
||||
"_html_template_commentescaper": commentEscaper,
|
||||
"_html_template_cssescaper": cssEscaper,
|
||||
"_html_template_cssvaluefilter": cssValueFilter,
|
||||
"_html_template_htmlnamefilter": htmlNameFilter,
|
||||
"_html_template_htmlescaper": htmlEscaper,
|
||||
"_html_template_jsregexpescaper": jsRegexpEscaper,
|
||||
"_html_template_jsstrescaper": jsStrEscaper,
|
||||
"_html_template_jstmpllitescaper": jsTmplLitEscaper,
|
||||
"_html_template_jsvalescaper": jsValEscaper,
|
||||
"_html_template_nospaceescaper": htmlNospaceEscaper,
|
||||
"_html_template_rcdataescaper": rcdataEscaper,
|
||||
"_html_template_srcsetescaper": srcsetFilterAndEscaper,
|
||||
"_html_template_urlescaper": urlEscaper,
|
||||
"_html_template_urlfilter": urlFilter,
|
||||
"_html_template_urlnormalizer": urlNormalizer,
|
||||
"_eval_args_": evalArgs,
|
||||
}
|
||||
|
||||
// escaper collects type inferences about templates and changes needed to make
|
||||
@@ -164,7 +163,6 @@ func (e *escaper) escape(c context, n parse.Node) context {
|
||||
panic("escaping " + n.String() + " is unimplemented")
|
||||
}
|
||||
|
||||
// Modified by Hugo.
|
||||
// var debugAllowActionJSTmpl = godebug.New("jstmpllitinterp")
|
||||
|
||||
// escapeAction escapes an action template node.
|
||||
@@ -230,16 +228,8 @@ func (e *escaper) escapeAction(c context, n *parse.ActionNode) context {
|
||||
c.jsCtx = jsCtxDivOp
|
||||
case stateJSDqStr, stateJSSqStr:
|
||||
s = append(s, "_html_template_jsstrescaper")
|
||||
case stateJSBqStr:
|
||||
if SecurityAllowActionJSTmpl.Load() {
|
||||
// debugAllowActionJSTmpl.IncNonDefault()
|
||||
s = append(s, "_html_template_jsstrescaper")
|
||||
} else {
|
||||
return context{
|
||||
state: stateError,
|
||||
err: errorf(ErrJSTemplate, n, n.Line, "%s appears in a JS template literal", n),
|
||||
}
|
||||
}
|
||||
case stateJSTmplLit:
|
||||
s = append(s, "_html_template_jstmpllitescaper")
|
||||
case stateJSRegexp:
|
||||
s = append(s, "_html_template_jsregexpescaper")
|
||||
case stateCSS:
|
||||
@@ -398,6 +388,9 @@ var redundantFuncs = map[string]map[string]bool{
|
||||
"_html_template_jsstrescaper": {
|
||||
"_html_template_attrescaper": true,
|
||||
},
|
||||
"_html_template_jstmpllitescaper": {
|
||||
"_html_template_attrescaper": true,
|
||||
},
|
||||
"_html_template_urlescaper": {
|
||||
"_html_template_urlnormalizer": true,
|
||||
},
|
||||
|
Reference in New Issue
Block a user