From ca9b9671a54f81e3b942118c7b0277029b816787 Mon Sep 17 00:00:00 2001 From: tomhuda Date: Fri, 4 Mar 2011 00:11:03 -0800 Subject: [PATCH] Add Hash arguments to simple mustaches (TODO: add Hash args to block helpers) --- lib/handlebars/ast.js | 3 ++- lib/handlebars/printer.js | 7 +++-- lib/handlebars/vm.js | 53 +++++++++++++++++++++++++++++++----- spec/parser_spec.rb | 17 ++++++------ spec/qunit_spec.js | 57 +++++++++++++++++++++++---------------- src/handlebars.yy | 16 +++++------ 6 files changed, 105 insertions(+), 48 deletions(-) diff --git a/lib/handlebars/ast.js b/lib/handlebars/ast.js index ccaef511..a266fe78 100644 --- a/lib/handlebars/ast.js +++ b/lib/handlebars/ast.js @@ -11,10 +11,11 @@ var Handlebars = require("handlebars"); if(inverse) { this.inverse = new Handlebars.AST.ProgramNode(inverse); } }; - Handlebars.AST.MustacheNode = function(params, unescaped) { + Handlebars.AST.MustacheNode = function(params, hash, unescaped) { this.type = "mustache"; this.id = params[0]; this.params = params.slice(1); + this.hash = hash; this.escaped = !unescaped; }; diff --git a/lib/handlebars/printer.js b/lib/handlebars/printer.js index 86a67ef7..2da7bccb 100644 --- a/lib/handlebars/printer.js +++ b/lib/handlebars/printer.js @@ -73,14 +73,17 @@ Handlebars.PrintVisitor.prototype.inverse = function(block) { Handlebars.PrintVisitor.prototype.mustache = function(mustache) { - var params = mustache.params, paramStrings = []; + var params = mustache.params, paramStrings = [], hash; for(var i=0, l=params.length; i