summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--lib/handlebars/compiler/compiler.js18
-rw-r--r--lib/handlebars/vm.js3
2 files changed, 12 insertions, 9 deletions
diff --git a/lib/handlebars/compiler/compiler.js b/lib/handlebars/compiler/compiler.js
index 75f852d..7739f9d 100644
--- a/lib/handlebars/compiler/compiler.js
+++ b/lib/handlebars/compiler/compiler.js
@@ -409,17 +409,19 @@ Handlebars.JavaScriptCompiler = function() {};
if(params.length === 4 && !this.environment.usePartial) { params.pop(); }
- params.push(this.source.join("\n"));
+ var functionSource = 'function(' + params.join(',') + ') {\n ' + this.source.join("\n ") + '}';
- var fn = Function.apply(this, params);
- fn.displayName = "Handlebars.js";
+ Handlebars.log(Handlebars.logger.DEBUG, functionSource + "\n\n");
- Handlebars.log(Handlebars.logger.DEBUG, fn.toString() + "\n\n");
+ var script = ['{\n fn: ', functionSource, ',\n children: [\n '],
+ children = this.environment.children;
+ for (var i = 0, len = children.length; i < len; i++) {
+ script.push(children[i]);
+ if (i < len-1) { script.push(',\n'); }
+ }
+ script.push('\n ]\n}');
- return {
- fn: fn,
- children: this.environment.children
- };
+ return script.join('');
},
appendContent: function(content) {
diff --git a/lib/handlebars/vm.js b/lib/handlebars/vm.js
index 782ef2e..4f251f6 100644
--- a/lib/handlebars/vm.js
+++ b/lib/handlebars/vm.js
@@ -69,7 +69,8 @@ Handlebars.VM = {
compile: function(string, options) {
var ast = Handlebars.parse(string);
var environment = new Handlebars.Compiler().compile(ast, options);
- var logic = new Handlebars.JavaScriptCompiler().compile(environment, options);
+ // Yes this is evil. Work in progress for the best way to handle runtime comp vs. cached comp.
+ var logic = eval('(' + new Handlebars.JavaScriptCompiler().compile(environment, options) + ')');
return Handlebars.VM.generateContainer(logic);
},
invokePartial: function(partial, name, context, helpers, partials) {