mirror of
https://github.com/golang/go
synced 2024-11-24 23:37:56 -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:
parent
be32c6aaf5
commit
ed62d27a52
@ -18,7 +18,11 @@ import (
|
|||||||
// You can override the default formatter by storing your default
|
// You can override the default formatter by storing your default
|
||||||
// under the name "" in your custom formatter map.
|
// under the name "" in your custom formatter map.
|
||||||
func StringFormatter(w io.Writer, value interface{}, format string) {
|
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 (
|
var (
|
||||||
|
@ -847,6 +847,9 @@ func validDelim(d []byte) bool {
|
|||||||
// s contains the template text. If any errors occur, Parse returns
|
// s contains the template text. If any errors occur, Parse returns
|
||||||
// the error.
|
// the error.
|
||||||
func (t *Template) Parse(s string) os.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) {
|
if !validDelim(t.ldelim) || !validDelim(t.rdelim) {
|
||||||
return &Error{1, fmt.Sprintf("bad delimiter strings %q %q", t.ldelim, t.rdelim)}
|
return &Error{1, fmt.Sprintf("bad delimiter strings %q %q", t.ldelim, t.rdelim)}
|
||||||
}
|
}
|
||||||
|
@ -9,6 +9,7 @@ import (
|
|||||||
"container/vector";
|
"container/vector";
|
||||||
"fmt";
|
"fmt";
|
||||||
"io";
|
"io";
|
||||||
|
"strings";
|
||||||
"testing";
|
"testing";
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -41,6 +42,7 @@ type S struct {
|
|||||||
false bool;
|
false bool;
|
||||||
mp map[string]string;
|
mp map[string]string;
|
||||||
innermap U;
|
innermap U;
|
||||||
|
bytes []byte;
|
||||||
}
|
}
|
||||||
|
|
||||||
var t1 = T{"ItemNumber1", "ValueNumber1"}
|
var t1 = T{"ItemNumber1", "ValueNumber1"}
|
||||||
@ -282,6 +284,12 @@ var tests = []*Test{
|
|||||||
out: "1\n4\n",
|
out: "1\n4\n",
|
||||||
},
|
},
|
||||||
|
|
||||||
|
&Test{
|
||||||
|
in: "{bytes}",
|
||||||
|
|
||||||
|
out: "hello",
|
||||||
|
},
|
||||||
|
|
||||||
// Maps
|
// Maps
|
||||||
|
|
||||||
&Test{
|
&Test{
|
||||||
@ -317,6 +325,7 @@ func TestAll(t *testing.T) {
|
|||||||
s.mp["mapkey"] = "Ahoy!";
|
s.mp["mapkey"] = "Ahoy!";
|
||||||
s.innermap.mp = make(map[string]int);
|
s.innermap.mp = make(map[string]int);
|
||||||
s.innermap.mp["innerkey"] = 55;
|
s.innermap.mp["innerkey"] = 55;
|
||||||
|
s.bytes = strings.Bytes("hello");
|
||||||
|
|
||||||
var buf bytes.Buffer;
|
var buf bytes.Buffer;
|
||||||
for _, test := range tests {
|
for _, test := range tests {
|
||||||
|
Loading…
Reference in New Issue
Block a user