aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorScott Lawrence <bytbox@gmail.com>2010-08-11 14:04:03 +1000
committerRob Pike <r@golang.org>2010-08-11 14:04:03 +1000
commitbca3151042ab7c81d2edda17749bc2613c84edd0 (patch)
treea2deff1d3a23e2f54f4e3e2b6bc1c6dc9dac317a
parenta9a62eef6b055c8764f95c346d9620a7790ff6ad (diff)
downloadgo-bca3151042ab7c81d2edda17749bc2613c84edd0.tar.gz
go-bca3151042ab7c81d2edda17749bc2613c84edd0.zip
template: added ParseFile method for template.Template
Fixes #971. Parse/ParseFile methods of Template now match template.Parse and .ParseFile methods. Also made tests being run on Parse and ParseFile be run on Template.ParseFile as well. R=r CC=golang-dev https://golang.org/cl/1741059
-rw-r--r--src/pkg/template/template.go10
-rw-r--r--src/pkg/template/template_test.go16
2 files changed, 25 insertions, 1 deletions
diff --git a/src/pkg/template/template.go b/src/pkg/template/template.go
index 11371abe70..debcad4c0b 100644
--- a/src/pkg/template/template.go
+++ b/src/pkg/template/template.go
@@ -888,6 +888,16 @@ func (t *Template) Parse(s string) (err os.Error) {
return nil
}
+// ParseFile is like Parse but reads the template definition from the
+// named file.
+func (t *Template) ParseFile(filename string) (err os.Error) {
+ b, err := ioutil.ReadFile(filename)
+ if err != nil {
+ return err
+ }
+ return t.Parse(string(b))
+}
+
// Execute applies a parsed template to the specified data object,
// generating output to wr.
func (t *Template) Execute(data interface{}, wr io.Writer) (err os.Error) {
diff --git a/src/pkg/template/template_test.go b/src/pkg/template/template_test.go
index a6267bfccf..8157972e42 100644
--- a/src/pkg/template/template_test.go
+++ b/src/pkg/template/template_test.go
@@ -398,9 +398,23 @@ func TestAll(t *testing.T) {
testAll(t, func(test *Test) (*Template, os.Error) { return Parse(test.in, formatters) })
// ParseFile
testAll(t, func(test *Test) (*Template, os.Error) {
- ioutil.WriteFile("_test/test.tmpl", []byte(test.in), 0600)
+ err := ioutil.WriteFile("_test/test.tmpl", []byte(test.in), 0600)
+ if err != nil {
+ t.Error("unexpected write error:", err)
+ return nil, err
+ }
return ParseFile("_test/test.tmpl", formatters)
})
+ // tmpl.ParseFile
+ testAll(t, func(test *Test) (*Template, os.Error) {
+ err := ioutil.WriteFile("_test/test.tmpl", []byte(test.in), 0600)
+ if err != nil {
+ t.Error("unexpected write error:", err)
+ return nil, err
+ }
+ tmpl := New(formatters)
+ return tmpl, tmpl.ParseFile("_test/test.tmpl")
+ })
}
func testAll(t *testing.T, parseFunc func(*Test) (*Template, os.Error)) {