mirror of
https://github.com/gohugoio/hugo.git
synced 2025-04-26 05:30:54 +03:00
Pull in the latest code from Go's template packages (#11771)
Fixes #10707 Fixes #11507
This commit is contained in:
parent
14d85ec136
commit
9f978d387f
25 changed files with 417 additions and 190 deletions
|
@ -239,6 +239,11 @@ func jsStrEscaper(args ...any) string {
|
|||
return replace(s, jsStrReplacementTable)
|
||||
}
|
||||
|
||||
func jsTmplLitEscaper(args ...any) string {
|
||||
s, _ := stringify(args...)
|
||||
return replace(s, jsBqStrReplacementTable)
|
||||
}
|
||||
|
||||
// jsRegexpEscaper behaves like jsStrEscaper but escapes regular expression
|
||||
// specials so the result is treated literally when included in a regular
|
||||
// expression literal. /foo{{.X}}bar/ matches the string "foo" followed by
|
||||
|
@ -325,6 +330,31 @@ var jsStrReplacementTable = []string{
|
|||
'\\': `\\`,
|
||||
}
|
||||
|
||||
// jsBqStrReplacementTable is like jsStrReplacementTable except it also contains
|
||||
// the special characters for JS template literals: $, {, and }.
|
||||
var jsBqStrReplacementTable = []string{
|
||||
0: `\u0000`,
|
||||
'\t': `\t`,
|
||||
'\n': `\n`,
|
||||
'\v': `\u000b`, // "\v" == "v" on IE 6.
|
||||
'\f': `\f`,
|
||||
'\r': `\r`,
|
||||
// Encode HTML specials as hex so the output can be embedded
|
||||
// in HTML attributes without further encoding.
|
||||
'"': `\u0022`,
|
||||
'`': `\u0060`,
|
||||
'&': `\u0026`,
|
||||
'\'': `\u0027`,
|
||||
'+': `\u002b`,
|
||||
'/': `\/`,
|
||||
'<': `\u003c`,
|
||||
'>': `\u003e`,
|
||||
'\\': `\\`,
|
||||
'$': `\u0024`,
|
||||
'{': `\u007b`,
|
||||
'}': `\u007d`,
|
||||
}
|
||||
|
||||
// jsStrNormReplacementTable is like jsStrReplacementTable but does not
|
||||
// overencode existing escapes since this table has no entry for `\`.
|
||||
var jsStrNormReplacementTable = []string{
|
||||
|
@ -345,6 +375,7 @@ var jsStrNormReplacementTable = []string{
|
|||
'<': `\u003c`,
|
||||
'>': `\u003e`,
|
||||
}
|
||||
|
||||
var jsRegexpReplacementTable = []string{
|
||||
0: `\u0000`,
|
||||
'\t': `\t`,
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue