]> Cypherpunks repositories - gostls13.git/commitdiff
exp/template: add functions print and println.
authorRob Pike <r@golang.org>
Sun, 10 Jul 2011 23:19:18 +0000 (09:19 +1000)
committerRob Pike <r@golang.org>
Sun, 10 Jul 2011 23:19:18 +0000 (09:19 +1000)
R=golang-dev, adg
CC=golang-dev
https://golang.org/cl/4687041

src/pkg/exp/template/exec_test.go
src/pkg/exp/template/funcs.go

index 831113c4081fdc57d1367bd1b0cc4b0bbd74fada..734399820538b0745718d39e74db58283a608e47 100644 (file)
@@ -207,8 +207,10 @@ var execTests = []execTest{
        {"if emptymap", "{{if .MSIEmpty}}NON-EMPTY{{else}}EMPTY{{end}}", "EMPTY", tVal, true},
        {"if map", "{{if .MSI}}NON-EMPTY{{else}}EMPTY{{end}}", "NON-EMPTY", tVal, true},
 
-       // Printf.
-       {"printf", `{{printf "hello, printf"}}`, "hello, printf", tVal, true},
+       // Print etc.
+       {"print", `{{print "hello, print"}}`, "hello, print", tVal, true},
+       {"print", `{{print 1 2 3}}`, "1 2 3", tVal, true},
+       {"println", `{{println 1 2 3}}`, "1 2 3\n", tVal, true},
        {"printf int", `{{printf "%04x" 127}}`, "007f", tVal, true},
        {"printf float", `{{printf "%g" 3.5}}`, "3.5", tVal, true},
        {"printf complex", `{{printf "%g" 1+7i}}`, "(1+7i)", tVal, true},
index 66be40fd4d7724cd5e02cff728ecd93433eb85f9..32c4969f590722a0dd1509ce6a3d73acd48d41cb 100644 (file)
@@ -17,17 +17,27 @@ import (
 
 // 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 os.Error.
+// which the second has type os.Error. If the second argument evaluates to non-nil
+// during execution, execution terminates and the error is returned by Execute.
 type FuncMap map[string]interface{}
 
 var funcs = map[string]reflect.Value{
-       "and":    reflect.ValueOf(and),
-       "html":   reflect.ValueOf(HTMLEscaper),
-       "index":  reflect.ValueOf(index),
-       "js":     reflect.ValueOf(JSEscaper),
-       "not":    reflect.ValueOf(not),
-       "or":     reflect.ValueOf(or),
-       "printf": reflect.ValueOf(fmt.Sprintf),
+       "and":     reflect.ValueOf(and),
+       "html":    reflect.ValueOf(HTMLEscaper),
+       "index":   reflect.ValueOf(index),
+       "js":      reflect.ValueOf(JSEscaper),
+       "not":     reflect.ValueOf(not),
+       "or":      reflect.ValueOf(or),
+       "print":   reflect.ValueOf(fmt.Sprint),
+       "printf":  reflect.ValueOf(fmt.Sprintf),
+       "println": reflect.ValueOf(fmt.Sprintln),
+}
+
+// Funcs adds to the global function map the elements of the
+// argument map.   It panics if a value in the map is not a function
+// with appropriate return type.
+func Funcs(funcMap FuncMap) {
+       addFuncs(funcs, funcMap)
 }
 
 // addFuncs adds to values the functions in funcs, converting them to reflect.Values.