diff options
-rw-r--r-- | lib/handlebars.js | 2 | ||||
-rw-r--r-- | lib/handlebars/compiler.js (renamed from lib/handlebars/vm.js) | 30 | ||||
-rw-r--r-- | spec/spec_helper.rb | 2 |
3 files changed, 20 insertions, 14 deletions
diff --git a/lib/handlebars.js b/lib/handlebars.js index 2c24dde..b578775 100644 --- a/lib/handlebars.js +++ b/lib/handlebars.js @@ -7,7 +7,7 @@ require("handlebars/ast"); require("handlebars/printer"); require("handlebars/visitor"); -require("handlebars/vm"); +require("handlebars/compiler"); // BEGIN(BROWSER) diff --git a/lib/handlebars/vm.js b/lib/handlebars/compiler.js index 67a9c08..16805f3 100644 --- a/lib/handlebars/vm.js +++ b/lib/handlebars/compiler.js @@ -427,10 +427,12 @@ Handlebars.JavaScriptCompiler = function() {}; container.children = this.environment.children; - return function(context, helpers, partials, data, $depth) { + return function(context, options, $depth) { try { - var args = Array.prototype.slice.call(arguments); - args.unshift(Handlebars); + options = options || {}; + var args = [Handlebars, context, options.helpers, options.partials, options.data]; + var depth = Array.prototype.slice.call(arguments, 2); + args = args.concat(depth); return container.render.apply(container, args); } catch(e) { throw e; @@ -693,18 +695,22 @@ Handlebars.JavaScriptCompiler = function() {}; })(Handlebars.Compiler, Handlebars.JavaScriptCompiler); Handlebars.VM = { - programWithDepth: function(fn) { - var args = Array.prototype.slice.call(arguments, 1); + programWithDepth: function(fn, passedHelpers, passedPartials, passedData, $depth) { + var args = Array.prototype.slice.call(arguments, 4); + return function(context, helpers, partials, data) { - args[0] = helpers || args[0]; - args[1] = partials || args[1]; - args[2] = data || args[2]; - return fn.apply(this, [context].concat(args)); + var options = { + helpers: helpers || passedHelpers, + partials: partials || passedPartials, + data: data || passedData + }; + + return fn.apply(this, [context, options].concat(args)); }; }, program: function(fn, helpers, partials, data) { return function(context, h2, p2, d2) { - return fn(context, h2 || helpers, p2 || partials, d2 || data); + return fn(context, {helpers: h2 || helpers, partials: p2 || partials, data: d2 || data}); }; }, noop: function() { return ""; }, @@ -717,10 +723,10 @@ Handlebars.VM = { if(partial === undefined) { throw new Handlebars.Exception("The partial " + name + " could not be found"); } else if(partial instanceof Function) { - return partial(context, helpers, partials); + return partial(context, {helpers: helpers, partials: partials}); } else { partials[name] = Handlebars.VM.compile(partial); - return partials[name](context, helpers, partials); + return partials[name](context, {helpers: helpers, partials: partials}); } } }; diff --git a/spec/spec_helper.rb b/spec/spec_helper.rb index 8b03f4e..c3c89ef 100644 --- a/spec/spec_helper.rb +++ b/spec/spec_helper.rb @@ -78,7 +78,7 @@ module Handlebars Handlebars::Spec.js_load('lib/handlebars/visitor.js'); Handlebars::Spec.js_load('lib/handlebars/printer.js') Handlebars::Spec.js_load('lib/handlebars/utils.js') - Handlebars::Spec.js_load('lib/handlebars/vm.js') + Handlebars::Spec.js_load('lib/handlebars/compiler.js') Handlebars::Spec.js_load('lib/handlebars.js') context["Handlebars"]["logger"]["level"] = ENV["DEBUG_JS"] ? context["Handlebars"]["logger"][ENV["DEBUG_JS"]] : 4 |