diff options
author | Yehuda Katz <tomhuda@Yehudas-iMac.local> | 2011-12-27 18:15:44 -0800 |
---|---|---|
committer | Yehuda Katz <tomhuda@Yehudas-iMac.local> | 2011-12-27 18:15:44 -0800 |
commit | 757d5250dcd7cd8a979b0c5d92f2a1d24f12e663 (patch) | |
tree | 9764e5b66cbac142d98d522ec255c965e1c308a4 /lib/handlebars/runtime.js | |
parent | 163a92ebe0c3df4ab71268b954ebe6c021719e7f (diff) | |
download | handlebars.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.js | 68 |
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) + |