Commit abae8471 authored by Rob Pike's avatar Rob Pike

exp/template: add functions print and println.

R=golang-dev, adg
CC=golang-dev
https://golang.org/cl/4687041
parent 4acddca4
......@@ -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},
......
......@@ -17,7 +17,8 @@ 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{
......@@ -27,7 +28,16 @@ var funcs = map[string]reflect.Value{
"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.
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment