summaryrefslogtreecommitdiffstats
path: root/lib/handlebars/runtime.js
diff options
context:
space:
mode:
authorYehuda Katz <tomhuda@Yehudas-iMac.local>2011-12-27 18:15:44 -0800
committerYehuda Katz <tomhuda@Yehudas-iMac.local>2011-12-27 18:15:44 -0800
commit757d5250dcd7cd8a979b0c5d92f2a1d24f12e663 (patch)
tree9764e5b66cbac142d98d522ec255c965e1c308a4 /lib/handlebars/runtime.js
parent163a92ebe0c3df4ab71268b954ebe6c021719e7f (diff)
downloadhandlebars.js-757d5250dcd7cd8a979b0c5d92f2a1d24f12e663.zip
handlebars.js-757d5250dcd7cd8a979b0c5d92f2a1d24f12e663.tar.gz
handlebars.js-757d5250dcd7cd8a979b0c5d92f2a1d24f12e663.tar.bz2
Rename "vm" to "runtime" for clarity
Diffstat (limited to 'lib/handlebars/runtime.js')
-rw-r--r--lib/handlebars/runtime.js68
1 files changed, 68 insertions, 0 deletions
diff --git a/lib/handlebars/runtime.js b/lib/handlebars/runtime.js
new file mode 100644
index 0000000..30798e8
--- /dev/null
+++ b/lib/handlebars/runtime.js
@@ -0,0 +1,68 @@
+var Handlebars = require("./base");
+
+// BEGIN(BROWSER)
+Handlebars.VM = {
+ template: function(templateSpec) {
+ // Just add water
+ var container = {
+ escapeExpression: Handlebars.Utils.escapeExpression,
+ invokePartial: Handlebars.VM.invokePartial,
+ programs: [],
+ program: function(i, fn, data) {
+ var programWrapper = this.programs[i];
+ if(data) {
+ return Handlebars.VM.program(fn, data);
+ } else if(programWrapper) {
+ return programWrapper;
+ } else {
+ programWrapper = this.programs[i] = Handlebars.VM.program(fn);
+ return programWrapper;
+ }
+ },
+ programWithDepth: Handlebars.VM.programWithDepth,
+ noop: Handlebars.VM.noop
+ };
+
+ return function(context, options) {
+ options = options || {};
+ return templateSpec.call(container, Handlebars, context, options.helpers, options.partials, options.data);
+ };
+ },
+
+ programWithDepth: function(fn, data, $depth) {
+ var args = Array.prototype.slice.call(arguments, 2);
+
+ return function(context, options) {
+ options = options || {};
+
+ return fn.apply(this, [context, options.data || data].concat(args));
+ };
+ },
+ program: function(fn, data) {
+ return function(context, options) {
+ options = options || {};
+
+ return fn(context, options.data || data);
+ };
+ },
+ noop: function() { return ""; },
+ invokePartial: function(partial, name, context, helpers, partials, data) {
+ options = { helpers: helpers, partials: partials, data: data };
+
+ if(partial === undefined) {
+ throw new Handlebars.Exception("The partial " + name + " could not be found");
+ } else if(partial instanceof Function) {
+ return partial(context, options);
+ } else if (!Handlebars.compile) {
+ throw new Handlebars.Exception("The partial " + name + " could not be compiled when running in runtime-only mode");
+ } else {
+ partials[name] = Handlebars.compile(partial);
+ return partials[name](context, options);
+ }
+ }
+};
+
+Handlebars.template = Handlebars.VM.template;
+
+// END(BROWSER)
+