]> Cypherpunks repositories - gostls13.git/commitdiff
html/template: define the FuncMap type locally
authorRob Pike <r@golang.org>
Wed, 14 Dec 2011 19:22:17 +0000 (11:22 -0800)
committerRob Pike <r@golang.org>
Wed, 14 Dec 2011 19:22:17 +0000 (11:22 -0800)
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

src/pkg/html/template/escape_test.go
src/pkg/html/template/template.go

index cdeed48b822f68e30af2970db7118aff2589ce13..2d15c71844846f03837a00fabd660b36bea2aa1a 100644 (file)
@@ -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
index 4657f6ec5236ab4a3a6fb4d0f609c611cd7bd430..9ffe41413a8ecab61a9b2eeba26c48b57fa7b72b 100644 (file)
@@ -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
 }