diff options
author | kpdecker <kpdecker@gmail.com> | 2011-07-30 11:23:24 -0500 |
---|---|---|
committer | kpdecker <kpdecker@gmail.com> | 2011-07-30 11:23:24 -0500 |
commit | 59f5331db47c4c6dce1cb82d05f25d08362b14b2 (patch) | |
tree | 7591e3da5eed7a35cf57f19684a91af857cde0a1 /lib/handlebars/compiler/compiler.js | |
parent | 74bd8cac602dff27123eb94ea7e9522deb498c70 (diff) | |
download | handlebars.js-59f5331db47c4c6dce1cb82d05f25d08362b14b2.zip handlebars.js-59f5331db47c4c6dce1cb82d05f25d08362b14b2.tar.gz handlebars.js-59f5331db47c4c6dce1cb82d05f25d08362b14b2.tar.bz2 |
Phase 2 of precompiled extraction:
Use string representations to pass around the function context
Diffstat (limited to 'lib/handlebars/compiler/compiler.js')
-rw-r--r-- | lib/handlebars/compiler/compiler.js | 18 |
1 files changed, 10 insertions, 8 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) { |