aboutsummaryrefslogtreecommitdiff
path: root/src/text/template/exec.go
diff options
context:
space:
mode:
Diffstat (limited to 'src/text/template/exec.go')
-rw-r--r--src/text/template/exec.go39
1 files changed, 25 insertions, 14 deletions
diff --git a/src/text/template/exec.go b/src/text/template/exec.go
index faf31e3ede..613a778188 100644
--- a/src/text/template/exec.go
+++ b/src/text/template/exec.go
@@ -136,24 +136,35 @@ func (t *Template) Execute(wr io.Writer, data interface{}) (err error) {
}
t.init()
if t.Tree == nil || t.Root == nil {
- var b bytes.Buffer
- for name, tmpl := range t.tmpl {
- if tmpl.Tree == nil || tmpl.Root == nil {
- continue
- }
- if b.Len() > 0 {
- b.WriteString(", ")
- }
- fmt.Fprintf(&b, "%q", name)
+ state.errorf("%q is an incomplete or empty template%s", t.Name(), t.DefinedTemplates())
+ }
+ state.walk(value, t.Root)
+ return
+}
+
+// DefinedTemplates returns a string listing the defined templates,
+// prefixed by the string "defined templates are: ". If there are none,
+// it returns the empty string. For generating an error message here
+// and in html/template.
+func (t *Template) DefinedTemplates() string {
+ if t.common == nil {
+ return ""
+ }
+ var b bytes.Buffer
+ for name, tmpl := range t.tmpl {
+ if tmpl.Tree == nil || tmpl.Root == nil {
+ continue
}
- var s string
if b.Len() > 0 {
- s = "; defined templates are: " + b.String()
+ b.WriteString(", ")
}
- state.errorf("%q is an incomplete or empty template%s", t.Name(), s)
+ fmt.Fprintf(&b, "%q", name)
}
- state.walk(value, t.Root)
- return
+ var s string
+ if b.Len() > 0 {
+ s = "; defined templates are: " + b.String()
+ }
+ return s
}
// Walk functions step through the major pieces of the template structure,