1
0
mirror of https://github.com/golang/go synced 2024-11-24 21:10:04 -07:00

template: two bug fixes / nits

* diagnose template not created with New
    (current code just crashes)
  * write []byte uninterpreted
    (current code writes fmt format: "[65 65 65 65]")

R=r
CC=golang-dev
https://golang.org/cl/161075
This commit is contained in:
Russ Cox 2009-11-30 10:29:14 -08:00
parent be32c6aaf5
commit ed62d27a52
3 changed files with 17 additions and 1 deletions

View File

@ -18,7 +18,11 @@ import (
// You can override the default formatter by storing your default
// under the name "" in your custom formatter map.
func StringFormatter(w io.Writer, value interface{}, format string) {
fmt.Fprint(w, value)
if b, ok := value.([]byte); ok {
w.Write(b);
return;
}
fmt.Fprint(w, value);
}
var (

View File

@ -847,6 +847,9 @@ func validDelim(d []byte) bool {
// s contains the template text. If any errors occur, Parse returns
// the error.
func (t *Template) Parse(s string) os.Error {
if t.elems == nil {
return &Error{1, "template not allocated with New"}
}
if !validDelim(t.ldelim) || !validDelim(t.rdelim) {
return &Error{1, fmt.Sprintf("bad delimiter strings %q %q", t.ldelim, t.rdelim)}
}

View File

@ -9,6 +9,7 @@ import (
"container/vector";
"fmt";
"io";
"strings";
"testing";
)
@ -41,6 +42,7 @@ type S struct {
false bool;
mp map[string]string;
innermap U;
bytes []byte;
}
var t1 = T{"ItemNumber1", "ValueNumber1"}
@ -282,6 +284,12 @@ var tests = []*Test{
out: "1\n4\n",
},
&Test{
in: "{bytes}",
out: "hello",
},
// Maps
&Test{
@ -317,6 +325,7 @@ func TestAll(t *testing.T) {
s.mp["mapkey"] = "Ahoy!";
s.innermap.mp = make(map[string]int);
s.innermap.mp["innerkey"] = 55;
s.bytes = strings.Bytes("hello");
var buf bytes.Buffer;
for _, test := range tests {