summaryrefslogtreecommitdiffstats
path: root/lib/handlebars/vm.js
diff options
context:
space:
mode:
Diffstat (limited to 'lib/handlebars/vm.js')
-rw-r--r--lib/handlebars/vm.js51
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)
+