diff options
-rw-r--r-- | lib/handlebars/compiler/javascript-compiler.js | 6 | ||||
-rw-r--r-- | lib/handlebars/runtime.js | 4 |
2 files changed, 6 insertions, 4 deletions
diff --git a/lib/handlebars/compiler/javascript-compiler.js b/lib/handlebars/compiler/javascript-compiler.js index 4b9db92..4d950d4 100644 --- a/lib/handlebars/compiler/javascript-compiler.js +++ b/lib/handlebars/compiler/javascript-compiler.js @@ -377,11 +377,9 @@ JavaScriptCompiler.prototype = { // If the `value` is a lambda, replace it on the stack by // the return value of the lambda resolvePossibleLambda: function() { - this.aliases.functionType = '"function"'; + this.aliases.lambda = 'this.lambda'; - this.replaceStack(function(current) { - return "typeof " + current + " === functionType ? " + current + ".apply(depth0) : " + current; - }); + this.push('lambda(' + this.popStack() + ', depth0)'); }, // [lookup] diff --git a/lib/handlebars/runtime.js b/lib/handlebars/runtime.js index d43f465..b9fc77d 100644 --- a/lib/handlebars/runtime.js +++ b/lib/handlebars/runtime.js @@ -50,6 +50,10 @@ export function template(templateSpec, env) { // Just add water var container = { + lambda: function(current, context) { + return typeof current === 'function' ? current.call(context) : current; + }, + escapeExpression: Utils.escapeExpression, invokePartial: invokePartialWrapper, |