summaryrefslogtreecommitdiffstats
path: root/lib/handlebars/compiler/compiler.js
diff options
context:
space:
mode:
authorkpdecker <kpdecker@gmail.com>2011-10-21 08:34:24 -0500
committerkpdecker <kpdecker@gmail.com>2011-10-21 08:34:24 -0500
commitdefc2f340378b4739cd715a7468c30b068db7793 (patch)
tree420a014c32eb4d4e56e2520233363881449b3b90 /lib/handlebars/compiler/compiler.js
parent4458b5fa133122804888f2454a5f319965adc018 (diff)
downloadhandlebars.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.js17
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);
};