diff options
Diffstat (limited to 'lib/handlebars/vm.js')
-rw-r--r-- | lib/handlebars/vm.js | 51 |
1 files changed, 51 insertions, 0 deletions
diff --git a/lib/handlebars/vm.js b/lib/handlebars/vm.js new file mode 100644 index 0000000..0b4c448 --- /dev/null +++ b/lib/handlebars/vm.js @@ -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) + |