diff options
author | kpdecker <kpdecker@gmail.com> | 2011-10-21 08:34:24 -0500 |
---|---|---|
committer | kpdecker <kpdecker@gmail.com> | 2011-10-21 08:34:24 -0500 |
commit | defc2f340378b4739cd715a7468c30b068db7793 (patch) | |
tree | 420a014c32eb4d4e56e2520233363881449b3b90 /lib/handlebars/compiler/compiler.js | |
parent | 4458b5fa133122804888f2454a5f319965adc018 (diff) | |
download | handlebars.js-defc2f340378b4739cd715a7468c30b068db7793.zip handlebars.js-defc2f340378b4739cd715a7468c30b068db7793.tar.gz handlebars.js-defc2f340378b4739cd715a7468c30b068db7793.tar.bz2 |
Refactor deferred compile to use helper
Diffstat (limited to 'lib/handlebars/compiler/compiler.js')
-rw-r--r-- | lib/handlebars/compiler/compiler.js | 17 |
1 files changed, 11 insertions, 6 deletions
diff --git a/lib/handlebars/compiler/compiler.js b/lib/handlebars/compiler/compiler.js index d4ee32c..7b759c1 100644 --- a/lib/handlebars/compiler/compiler.js +++ b/lib/handlebars/compiler/compiler.js @@ -753,16 +753,21 @@ Handlebars.precompile = function(string, options) { return new Handlebars.JavaScriptCompiler().compile(environment, options); }; -Handlebars.compile = function(string, compileOptions) { +Handlebars.compile = function(string, options) { + options = options || {}; + var compiled; - compileOptions = compileOptions || {}; + function compile() { + var ast = Handlebars.parse(string); + var environment = new Handlebars.Compiler().compile(ast, options); + var templateSpec = new Handlebars.JavaScriptCompiler().compile(environment, options, undefined, true); + return Handlebars.template(templateSpec); + } + // Template is only compiled on first use and cached after that point. return function(context, options) { if (!compiled) { - var ast = Handlebars.parse(string); - var environment = new Handlebars.Compiler().compile(ast, options); - var templateSpec = new Handlebars.JavaScriptCompiler().compile(environment, options, undefined, true); - compiled = Handlebars.template(templateSpec); + compiled = compile(); } return compiled.call(this, context, options); }; |