diff options
| author | Rob Pike <r@golang.org> | 2011-11-18 13:10:15 -0800 |
|---|---|---|
| committer | Rob Pike <r@golang.org> | 2011-11-18 13:10:15 -0800 |
| commit | 10e012c85fa95ec24d039dcfa710e8d3cd75839d (patch) | |
| tree | 5491cb84e7c3aa4a3242827297bc94ca10c148df /src/pkg/text/template/parse/parse.go | |
| parent | 5cad8611366d2a02aa7f02dd51024a1ad1ac7bc6 (diff) | |
| download | go-10e012c85fa95ec24d039dcfa710e8d3cd75839d.tar.xz | |
template/parse: rename Set to Parse
Preamble to the simplification of the template API.
Although the signature of Parse (nee Set) changes,
it's really an internal function, used only by
text/template.
R=golang-dev, rsc, gri, r
CC=golang-dev
https://golang.org/cl/5415052
Diffstat (limited to 'src/pkg/text/template/parse/parse.go')
| -rw-r--r-- | src/pkg/text/template/parse/parse.go | 27 |
1 files changed, 19 insertions, 8 deletions
diff --git a/src/pkg/text/template/parse/parse.go b/src/pkg/text/template/parse/parse.go index e906ee83aa..c0491e51e9 100644 --- a/src/pkg/text/template/parse/parse.go +++ b/src/pkg/text/template/parse/parse.go @@ -13,10 +13,10 @@ import ( "unicode" ) -// Tree is the representation of a parsed template. +// Tree is the representation of a single parsed template. type Tree struct { - Name string // Name is the name of the template. - Root *ListNode // Root is the top-level root of the parse tree. + Name string // name of the template represented by the tree. + Root *ListNode // top-level root of the tree. // Parsing only; cleared after parse. funcs []map[string]interface{} lex *lexer @@ -25,6 +25,16 @@ type Tree struct { vars []string // variables defined at the moment. } +// Parse returns a map from template name to parse.Tree, created by parsing the +// templates described in the argument string. The top-level template will be +// given the specified name. If an error is encountered, parsing stops and an +// empty map is returned with the error. +func Parse(name, text, leftDelim, rightDelim string, funcs ...map[string]interface{}) (treeSet map[string]*Tree, err error) { + treeSet = make(map[string]*Tree) + _, err = New(name).Parse(text, leftDelim, rightDelim, treeSet, funcs...) + return +} + // next returns the next token. func (t *Tree) next() item { if t.peekCount > 0 { @@ -58,7 +68,7 @@ func (t *Tree) peek() item { // Parsing. -// New allocates a new template with the given name. +// New allocates a new parse tree with the given name. func New(name string, funcs ...map[string]interface{}) *Tree { return &Tree{ Name: name, @@ -107,7 +117,7 @@ func (t *Tree) recover(errp *error) { return } -// startParse starts the template parsing from the lexer. +// startParse initializes the parser, using the lexer. func (t *Tree) startParse(funcs []map[string]interface{}, lex *lexer) { t.Root = nil t.lex = lex @@ -143,9 +153,10 @@ func (t *Tree) atEOF() bool { return false } -// Parse parses the template definition string to construct an internal -// representation of the template for execution. If either action delimiter -// string is empty, the default ("{{" or "}}") is used. +// Parse parses the template definition string to construct a representation of +// the template for execution. If either action delimiter string is empty, the +// default ("{{" or "}}") is used. Embedded template definitions are added to +// the treeSet map. func (t *Tree) Parse(s, leftDelim, rightDelim string, treeSet map[string]*Tree, funcs ...map[string]interface{}) (tree *Tree, err error) { defer t.recover(&err) t.startParse(funcs, lex(t.Name, s, leftDelim, rightDelim)) |
