mirror of
https://github.com/golang/go
synced 2024-11-21 23:34:42 -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 {
|
||||
tmpl := New(test.name)
|
||||
// TODO: Move noescape into template/func.go
|
||||
tmpl.Funcs(template.FuncMap{
|
||||
tmpl.Funcs(FuncMap{
|
||||
"noescape": func(a ...interface{}) string {
|
||||
return fmt.Sprint(a...)
|
||||
},
|
||||
@ -792,7 +792,7 @@ func TestEscapeSet(t *testing.T) {
|
||||
|
||||
// pred is a template function that returns the predecessor of a
|
||||
// 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 i, _ := a[0].(int); i > 0 {
|
||||
return i - 1, nil
|
||||
|
@ -154,12 +154,20 @@ func (t *Template) Name() string {
|
||||
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.
|
||||
// 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
|
||||
// value is the template, so calls can be chained.
|
||||
func (t *Template) Funcs(funcMap template.FuncMap) *Template {
|
||||
t.text.Funcs(funcMap)
|
||||
func (t *Template) Funcs(funcMap FuncMap) *Template {
|
||||
t.text.Funcs(template.FuncMap(funcMap))
|
||||
return t
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user