Break compiler and vm logic into separate files.

This commit is contained in:
kpdecker
2011-07-30 10:11:13 -05:00
parent 471f3b9748
commit f2dccb753f
4 changed files with 55 additions and 49 deletions
+51
View File
@@ -0,0 +1,51 @@
var Handlebars = require("handlebars");
// BEGIN(BROWSER)
Handlebars.VM = {
programWithDepth: function(fn, helpers, partials, data, $depth) {
var args = Array.prototype.slice.call(arguments, 4);
return function(context, options) {
options = options || {};
options = {
helpers: options.helpers || helpers,
partials: options.partials || partials,
data: options.data || data
};
return fn.apply(this, [context, options].concat(args));
};
},
program: function(fn, helpers, partials, data) {
return function(context, options) {
options = options || {};
return fn(context, {
helpers: options.helpers || helpers,
partials: options.partials || partials,
data: options.data || data
});
};
},
noop: function() { return ""; },
compile: function(string, options) {
var ast = Handlebars.parse(string);
var environment = new Handlebars.Compiler().compile(ast, options);
return new Handlebars.JavaScriptCompiler().compile(environment, options);
},
invokePartial: function(partial, name, context, helpers, partials) {
if(partial === undefined) {
throw new Handlebars.Exception("The partial " + name + " could not be found");
} else if(partial instanceof Function) {
return partial(context, {helpers: helpers, partials: partials});
} else {
partials[name] = Handlebars.VM.compile(partial);
return partials[name](context, {helpers: helpers, partials: partials});
}
}
};
Handlebars.compile = Handlebars.VM.compile;
// END(BROWSER)