diff options
| author | Rob Pike <r@golang.org> | 2015-04-03 13:10:47 -0700 |
|---|---|---|
| committer | Rob Pike <r@golang.org> | 2015-04-03 23:40:59 +0000 |
| commit | 4e5ac45ec5c15dba0f57f80e923a0de6f9f4f511 (patch) | |
| tree | 93c3b557f655573d1692d9542e17ab384e95805b /src/html/template | |
| parent | 4f2a73011f2d076d97a2b46492ab21f26a33222b (diff) | |
| download | go-4e5ac45ec5c15dba0f57f80e923a0de6f9f4f511.tar.xz | |
text/template: provide a mechanism for options
Add one option, which is the motivating example, a way to control
what happens when a map is indexed with a key that is not in the map.
Rather than do something specific for that case, we provide a simple
general option mechanism to avoid adding API if something else
comes up. This general approach also makes it easy for html/template
to track (and adapt, should that become important).
New method: Option(option string...). The option strings are key=value
pairs or just simple strings (no =).
New option:
missingkey: Control the behavior during execution if a map is
indexed with a key that is not present in the map.
"missingkey=default" or "missingkey=invalid"
The default behavior: Do nothing and continue execution.
If printed, the result of the index operation is the string
"<no value>".
"missingkey=zero"
The operation returns the zero value for the map type's element.
"missingkey=error"
Execution stops immediately with an error.
Fixes #6288.
Change-Id: Id811e2b99dc05aff324d517faac113ef3c25293a
Reviewed-on: https://go-review.googlesource.com/8462
Reviewed-by: Robert Griesemer <gri@golang.org>
Diffstat (limited to 'src/html/template')
| -rw-r--r-- | src/html/template/template.go | 23 |
1 files changed, 23 insertions, 0 deletions
diff --git a/src/html/template/template.go b/src/html/template/template.go index 64c0041c9c..bb9140a4da 100644 --- a/src/html/template/template.go +++ b/src/html/template/template.go @@ -51,6 +51,29 @@ func (t *Template) Templates() []*Template { return m } +// Option sets options for the template. Options are described by +// strings, either a simple string or "key=value". There can be at +// most one equals sign in an option string. If the option string +// is unrecognized or otherwise invalid, Option panics. +// +// Known options: +// +// missingkey: Control the behavior during execution if a map is +// indexed with a key that is not present in the map. +// "missingkey=default" or "missingkey=invalid" +// The default behavior: Do nothing and continue execution. +// If printed, the result of the index operation is the string +// "<no value>". +// "missingkey=zero" +// The operation returns the zero value for the map type's element. +// "missingkey=error" +// Execution stops immediately with an error. +// +func (t *Template) Option(opt ...string) *Template { + t.text.Option(opt...) + return t +} + // escape escapes all associated templates. func (t *Template) escape() error { t.nameSpace.mu.Lock() |
