mirror of
https://github.com/golang/go
synced 2024-11-21 22:44:40 -07:00
html/template: define the FuncMap type locally
This redefinition means that the public signature of html/template does not refer to text/template. Fixes #2546. R=golang-dev, rsc CC=golang-dev https://golang.org/cl/5487083
This commit is contained in:
parent
78821616d6
commit
1402d1a686
@ -654,7 +654,7 @@ func TestEscape(t *testing.T) {
|
|||||||
for _, test := range tests {
|
for _, test := range tests {
|
||||||
tmpl := New(test.name)
|
tmpl := New(test.name)
|
||||||
// TODO: Move noescape into template/func.go
|
// TODO: Move noescape into template/func.go
|
||||||
tmpl.Funcs(template.FuncMap{
|
tmpl.Funcs(FuncMap{
|
||||||
"noescape": func(a ...interface{}) string {
|
"noescape": func(a ...interface{}) string {
|
||||||
return fmt.Sprint(a...)
|
return fmt.Sprint(a...)
|
||||||
},
|
},
|
||||||
@ -792,7 +792,7 @@ func TestEscapeSet(t *testing.T) {
|
|||||||
|
|
||||||
// pred is a template function that returns the predecessor of a
|
// pred is a template function that returns the predecessor of a
|
||||||
// natural number for testing recursive templates.
|
// natural number for testing recursive templates.
|
||||||
fns := template.FuncMap{"pred": func(a ...interface{}) (interface{}, error) {
|
fns := FuncMap{"pred": func(a ...interface{}) (interface{}, error) {
|
||||||
if len(a) == 1 {
|
if len(a) == 1 {
|
||||||
if i, _ := a[0].(int); i > 0 {
|
if i, _ := a[0].(int); i > 0 {
|
||||||
return i - 1, nil
|
return i - 1, nil
|
||||||
|
@ -154,12 +154,20 @@ func (t *Template) Name() string {
|
|||||||
return t.text.Name()
|
return t.text.Name()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// FuncMap is the type of the map defining the mapping from names to
|
||||||
|
// functions. Each function must have either a single return value, or two
|
||||||
|
// return values of which the second has type error. In that case, if the
|
||||||
|
// second (error) argument evaluates to non-nil during execution, execution
|
||||||
|
// terminates and Execute returns that error. FuncMap has the same base type
|
||||||
|
// as template.FuncMap, copied here so clients need not import "text/template".
|
||||||
|
type FuncMap map[string]interface{}
|
||||||
|
|
||||||
// Funcs adds the elements of the argument map to the template's function map.
|
// Funcs adds the elements of the argument map to the template's function map.
|
||||||
// It panics if a value in the map is not a function with appropriate return
|
// It panics if a value in the map is not a function with appropriate return
|
||||||
// type. However, it is legal to overwrite elements of the map. The return
|
// type. However, it is legal to overwrite elements of the map. The return
|
||||||
// value is the template, so calls can be chained.
|
// value is the template, so calls can be chained.
|
||||||
func (t *Template) Funcs(funcMap template.FuncMap) *Template {
|
func (t *Template) Funcs(funcMap FuncMap) *Template {
|
||||||
t.text.Funcs(funcMap)
|
t.text.Funcs(template.FuncMap(funcMap))
|
||||||
return t
|
return t
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user