diff options
| author | Rob Pike <r@golang.org> | 2011-12-06 12:47:12 -0800 |
|---|---|---|
| committer | Rob Pike <r@golang.org> | 2011-12-06 12:47:12 -0800 |
| commit | ee8b597b1f1ffa634189cdd8ab23f976f65dab7f (patch) | |
| tree | d91be199f08b6cf4f9b21eded0b2e7425f793778 /src/pkg/html | |
| parent | 66410bac3d01253af9e1e1cbec65f7a90b2007ec (diff) | |
| download | go-ee8b597b1f1ffa634189cdd8ab23f976f65dab7f.tar.xz | |
html/template: simplify ExecuteTemplate a little
Allow the text template to handle the error case of no template
with the given name.
Simplification suggested by Mike Samuel.
R=mikesamuel
CC=golang-dev
https://golang.org/cl/5437147
Diffstat (limited to 'src/pkg/html')
| -rw-r--r-- | src/pkg/html/template/template.go | 15 |
1 files changed, 7 insertions, 8 deletions
diff --git a/src/pkg/html/template/template.go b/src/pkg/html/template/template.go index f05ca190f7..fa2ed18874 100644 --- a/src/pkg/html/template/template.go +++ b/src/pkg/html/template/template.go @@ -47,23 +47,22 @@ func (t *Template) Execute(wr io.Writer, data interface{}) (err error) { return t.text.Execute(wr, data) } -// ExecuteTemplate applies the template associated with t that has the given name -// to the specified data object and writes the output to wr. +// ExecuteTemplate applies the template associated with t that has the given +// name to the specified data object and writes the output to wr. func (t *Template) ExecuteTemplate(wr io.Writer, name string, data interface{}) (err error) { t.nameSpace.mu.Lock() tmpl := t.set[name] - if tmpl == nil { - t.nameSpace.mu.Unlock() - return fmt.Errorf("template: no template %q associated with template %q", name, t.Name()) + if (tmpl == nil) != (t.text.Lookup(name) == nil) { + panic("html/template internal error: template escaping out of sync") } - if !tmpl.escaped { + if tmpl != nil && !tmpl.escaped { err = escapeTemplates(tmpl, name) } t.nameSpace.mu.Unlock() if err != nil { return } - return tmpl.text.ExecuteTemplate(wr, name, data) + return t.text.ExecuteTemplate(wr, name, data) } // Parse parses a string into a template. Nested template definitions @@ -106,7 +105,7 @@ func (t *Template) AddParseTree(name string, tree *parse.Tree) error { // Clone is unimplemented. func (t *Template) Clone(name string) error { - return fmt.Errorf("html/template: Add unimplemented") + return fmt.Errorf("html/template: Clone unimplemented") } // New allocates a new HTML template with the given name. |
