]> Cypherpunks repositories - gostls13.git/commitdiff
text/template: add example showing use of custom function
authorRob Pike <r@golang.org>
Tue, 28 Feb 2012 04:50:41 +0000 (15:50 +1100)
committerRob Pike <r@golang.org>
Tue, 28 Feb 2012 04:50:41 +0000 (15:50 +1100)
R=golang-dev, adg
CC=golang-dev
https://golang.org/cl/5694100

src/pkg/text/template/examplefunc_test.go [new file with mode: 0644]

diff --git a/src/pkg/text/template/examplefunc_test.go b/src/pkg/text/template/examplefunc_test.go
new file mode 100644 (file)
index 0000000..080b5e3
--- /dev/null
@@ -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"
+}