summaryrefslogtreecommitdiffstats
path: root/lib/handlebars/compiler/visitor.js
diff options
context:
space:
mode:
authorkpdecker <kpdecker@gmail.com>2014-11-05 21:57:09 -0600
committerkpdecker <kpdecker@gmail.com>2014-11-05 21:57:09 -0600
commita7000f81292816065b122389ea3454ad85c1798e (patch)
treed36603cffbf2e70186d6e1d5bfb14a17a4058900 /lib/handlebars/compiler/visitor.js
parent632fadcea39b6328983c459ff7e8c4010a976837 (diff)
downloadhandlebars.js-a7000f81292816065b122389ea3454ad85c1798e.zip
handlebars.js-a7000f81292816065b122389ea3454ad85c1798e.tar.gz
handlebars.js-a7000f81292816065b122389ea3454ad85c1798e.tar.bz2
Provide stubbed visitor implementation
Part of #889
Diffstat (limited to 'lib/handlebars/compiler/visitor.js')
-rw-r--r--lib/handlebars/compiler/visitor.js60
1 files changed, 58 insertions, 2 deletions
diff --git a/lib/handlebars/compiler/visitor.js b/lib/handlebars/compiler/visitor.js
index 6a0373e..a4eb2b4 100644
--- a/lib/handlebars/compiler/visitor.js
+++ b/lib/handlebars/compiler/visitor.js
@@ -4,8 +4,64 @@ Visitor.prototype = {
constructor: Visitor,
accept: function(object) {
- return this[object.type](object);
- }
+ return object && this[object.type] && this[object.type](object);
+ },
+
+ program: function(program) {
+ var statements = program.statements,
+ i, l;
+
+ for(i=0, l=statements.length; i<l; i++) {
+ this.accept(statements[i]);
+ }
+ },
+
+ block: function(block) {
+ this.accept(block.mustache);
+ this.accept(block.program);
+ this.accept(block.inverse);
+ },
+
+ mustache: function(mustache) {
+ this.accept(mustache.sexpr);
+ },
+
+ sexpr: function(sexpr) {
+ var params = sexpr.params, paramStrings = [], hash;
+
+ this.accept(sexpr.id);
+ for(var i=0, l=params.length; i<l; i++) {
+ this.accept(params[i]);
+ }
+ this.accept(sexpr.hash);
+ },
+
+ hash: function(hash) {
+ var pairs = hash.pairs;
+
+ for(var i=0, l=pairs.length; i<l; i++) {
+ this.accept(pairs[i][1]);
+ }
+ },
+
+ 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) {}
};
export default Visitor;