Index: src/pkg/text/template/examplefunc_test.go |
=================================================================== |
new file mode 100644 |
--- /dev/null |
+++ b/src/pkg/text/template/examplefunc_test.go |
@@ -0,0 +1,54 @@ |
+// Copyright 2012 The Go Authors. All rights reserved. |
+// Use of this source code is governed by a BSD-style |
+// license that can be found in the LICENSE file. |
+ |
+package template_test |
+ |
+import ( |
+ "log" |
+ "os" |
+ "strings" |
+ "text/template" |
+) |
+ |
+// This example demonstrates a custom function to process template text. |
+// It installs the strings.Title function and uses it to |
+// Make Title Text Look Good In Our Template's Output. |
+func ExampleTemplate_func() { |
+ // First we create a FuncMap with which to register the function. |
+ funcMap := template.FuncMap{ |
+ // The name "title" is what the function will be called in the template text. |
+ "title": strings.Title, |
+ } |
+ |
+ // A simple template definition to test our function. |
+ // We print the input text several ways: |
+ // - the original |
+ // - title-cased |
+ // - title-cased and then printed with %q |
+ // - printed with %q and then title-cased. |
+ const templateText = ` |
+Input: {{printf "%q" .}} |
+Output 0: {{title .}} |
+Output 1: {{title . | printf "%q"}} |
+Output 2: {{printf "%q" . | title}} |
+` |
+ |
+ // Create a template, add the function map, and parse the text. |
+ tmpl, err := template.New("titleTest").Funcs(funcMap).Parse(templateText) |
+ if err != nil { |
+ log.Fatalf("parsing: %s", err) |
+ } |
+ |
+ // Run the template to verify the output. |
+ err = tmpl.Execute(os.Stdout, "the go programming language") |
+ if err != nil { |
+ log.Fatalf("execution: %s", err) |
+ } |
+ |
+ // Output: |
+ // Input: "the go programming language" |
+ // Output 0: The Go Programming Language |
+ // Output 1: "The Go Programming Language" |
+ // Output 2: "The Go Programming Language" |
+} |