From 258a08ed8fa698ebe33f7d24a4426d7a7e5bc926 Mon Sep 17 00:00:00 2001 From: Rob Pike Date: Wed, 22 Apr 2009 00:53:35 -0700 Subject: [PATCH] add {.tab} fix a couple of comments TBR=rsc OCL=27716 CL=27716 --- src/lib/template/template.go | 14 ++++++++------ src/lib/template/template_test.go | 1 + 2 files changed, 9 insertions(+), 6 deletions(-) diff --git a/src/lib/template/template.go b/src/lib/template/template.go index 6be09500053..1676a8fdde1 100644 --- a/src/lib/template/template.go +++ b/src/lib/template/template.go @@ -73,10 +73,11 @@ type ParseError struct { os.ErrorString } -// All the literals are aces. +// Most of the literals are aces. var lbrace = []byte{ '{' } var rbrace = []byte{ '}' } var space = []byte{ ' ' } +var tab = []byte{ '\t' } // The various types of "tokens", which are plain text or (usually) brace-delimited descriptors const ( @@ -330,7 +331,7 @@ func (t *Template) analyze(item []byte) (tok int, w []string) { return; } switch w[0] { - case ".meta-left", ".meta-right", ".space": + case ".meta-left", ".meta-right", ".space", ".tab": tok = tokLiteral; return; case ".or": @@ -413,6 +414,8 @@ func (t *Template) parseSimple(item []byte) (done bool, tok int, w []string) { t.elems.Push(&literalElement{t.rdelim}); case ".space": t.elems.Push(&literalElement{space}); + case ".tab": + t.elems.Push(&literalElement{tab}); default: t.parseError("internal error: unknown literal: %s", w[0]); } @@ -714,7 +717,7 @@ func validDelim(d []byte) bool { return true; } -// Public interface +// -- Public interface // Parse initializes a Template by parsing its definition. The string // s contains the template text. If any errors occur, Parse returns @@ -730,11 +733,10 @@ func (t *Template) Parse(s string) (err os.Error) { t.parse(); t.errorchan <- nil; // clean return; }(); - err = <-t.errorchan; - return + return <-t.errorchan; } -// Execute executes a parsed template on the specified data object, +// Execute applies a parsed template to the specified data object, // generating output to wr. func (t *Template) Execute(data interface{}, wr io.Write) os.Error { // Extract the driver data. diff --git a/src/lib/template/template_test.go b/src/lib/template/template_test.go index bad417669ca..cacc4404fad 100644 --- a/src/lib/template/template_test.go +++ b/src/lib/template/template_test.go @@ -73,6 +73,7 @@ var tests = []*Test { &Test{ " {.meta-left} \n", "{" }, &Test{ " {.meta-right} \n", "}" }, &Test{ " {.space} \n", " " }, + &Test{ " {.tab} \n", "\t" }, &Test{ " {#comment} \n", "" }, // Variables at top level