summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--lib/handlebars/compiler/javascript-compiler.js6
-rw-r--r--lib/handlebars/runtime.js4
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,