diff options
Diffstat (limited to 'lib/handlebars/compiler/visitor.js')
-rw-r--r-- | lib/handlebars/compiler/visitor.js | 63 |
1 files changed, 31 insertions, 32 deletions
diff --git a/lib/handlebars/compiler/visitor.js b/lib/handlebars/compiler/visitor.js index a4eb2b4..c0cfab6 100644 --- a/lib/handlebars/compiler/visitor.js +++ b/lib/handlebars/compiler/visitor.js @@ -4,64 +4,63 @@ Visitor.prototype = { constructor: Visitor, accept: function(object) { - return object && this[object.type] && this[object.type](object); + return object && this[object.type](object); }, - program: function(program) { - var statements = program.statements, + Program: function(program) { + var body = program.body, i, l; - for(i=0, l=statements.length; i<l; i++) { - this.accept(statements[i]); + for(i=0, l=body.length; i<l; i++) { + this.accept(body[i]); } }, - block: function(block) { - this.accept(block.mustache); + MustacheStatement: function(mustache) { + this.accept(mustache.sexpr); + }, + + BlockStatement: function(block) { + this.accept(block.sexpr); this.accept(block.program); this.accept(block.inverse); }, - mustache: function(mustache) { - this.accept(mustache.sexpr); + PartialStatement: function(partial) { + this.accept(partial.partialName); + this.accept(partial.context); + this.accept(partial.hash); }, - sexpr: function(sexpr) { + ContentStatement: function(content) {}, + CommentStatement: function(comment) {}, + + SubExpression: function(sexpr) { var params = sexpr.params, paramStrings = [], hash; - this.accept(sexpr.id); + this.accept(sexpr.path); for(var i=0, l=params.length; i<l; i++) { this.accept(params[i]); } this.accept(sexpr.hash); }, - hash: function(hash) { + PathExpression: function(path) {}, + + StringLiteral: function(string) {}, + NumberLiteral: function(number) {}, + BooleanLiteral: function(bool) {}, + + Hash: function(hash) { var pairs = hash.pairs; for(var i=0, l=pairs.length; i<l; i++) { - this.accept(pairs[i][1]); + this.accept(pairs[i]); } }, - - partial: function(partial) { - this.accept(partial.partialName); - this.accept(partial.context); - this.accept(partial.hash); - }, - PARTIAL_NAME: function(partialName) {}, - - DATA: function(data) { - this.accept(data.id); - }, - - STRING: function(string) {}, - NUMBER: function(number) {}, - BOOLEAN: function(bool) {}, - ID: function(id) {}, - - content: function(content) {}, - comment: function(comment) {} + HashPair: function(pair) { + this.accept(pair.value); + } }; export default Visitor; |