Commit 52f071ed authored by Rob Pike's avatar Rob Pike

Rename ParseError to Error

R=rsc
DELTA=13  (6 added, 1 deleted, 6 changed)
OCL=28743
CL=28746
parent 98b4f6ac
...@@ -57,6 +57,7 @@ ...@@ -57,6 +57,7 @@
package template package template
import ( import (
"container/vector";
"fmt"; "fmt";
"io"; "io";
"os"; "os";
...@@ -64,13 +65,17 @@ import ( ...@@ -64,13 +65,17 @@ import (
"runtime"; "runtime";
"strings"; "strings";
"template"; "template";
"container/vector";
) )
// Errors returned during parsing. TODO: different error model for execution? // Errors returned during parsing and execution. Users may extract the information and reformat
// if they desire.
type Error struct {
Line int;
Msg string;
}
type ParseError struct { func (e *Error) String() string {
os.ErrorString return fmt.Sprintf("line %d: %s", e.Line, e.Msg)
} }
// Most of the literals are aces. // Most of the literals are aces.
...@@ -181,7 +186,7 @@ func New(fmap FormatterMap) *Template { ...@@ -181,7 +186,7 @@ func New(fmap FormatterMap) *Template {
// Generic error handler, called only from execError or parseError. // Generic error handler, called only from execError or parseError.
func error(errors chan os.Error, line int, err string, args ...) { func error(errors chan os.Error, line int, err string, args ...) {
errors <- ParseError{os.ErrorString(fmt.Sprintf("line %d: %s", line, fmt.Sprintf(err, args)))}; errors <- &Error{line, fmt.Sprintf(err, args)};
runtime.Goexit(); runtime.Goexit();
} }
...@@ -756,7 +761,7 @@ func validDelim(d []byte) bool { ...@@ -756,7 +761,7 @@ func validDelim(d []byte) bool {
// the error. // the error.
func (t *Template) Parse(s string) os.Error { func (t *Template) Parse(s string) os.Error {
if !validDelim(t.ldelim) || !validDelim(t.rdelim) { if !validDelim(t.ldelim) || !validDelim(t.rdelim) {
return ParseError{os.ErrorString(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)}
} }
t.buf = io.StringBytes(s); t.buf = io.StringBytes(s);
t.p = 0; t.p = 0;
......
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