]> Cypherpunks repositories - gostls13.git/commitdiff
template: added ParseFile method for template.Template
authorScott Lawrence <bytbox@gmail.com>
Wed, 11 Aug 2010 04:04:03 +0000 (14:04 +1000)
committerRob Pike <r@golang.org>
Wed, 11 Aug 2010 04:04:03 +0000 (14:04 +1000)
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

src/pkg/template/template.go
src/pkg/template/template_test.go

index 11371abe70c9aa2a20dd04d8d16cec6689ad5dc5..debcad4c0b2711a5343f537088fbedd10391cd5f 100644 (file)
@@ -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) {
index a6267bfccf3e017e7715cebc28c64b3e1ee95b52..8157972e42330cb7a5410999a72d6e8741ba7ba7 100644 (file)
@@ -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)) {