Commit ed62d27a authored by Russ Cox's avatar Russ Cox

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
parent be32c6aa
......@@ -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 (
......
......@@ -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)}
}
......
......@@ -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 {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment