summaryrefslogtreecommitdiffstats
path: root/lib/handlebars/runtime.js
diff options
context:
space:
mode:
authorkpdecker <kpdecker@gmail.com>2014-11-27 09:11:03 -0600
committerkpdecker <kpdecker@gmail.com>2014-11-27 09:11:03 -0600
commitf990cf006422fbcbbae7d8a8a866831e58300ea4 (patch)
tree5511ccfde2f01f1018f6a73576ef393590cf5d5a /lib/handlebars/runtime.js
parent1124908d2a0d36493912eb2ce062545b1b5e5445 (diff)
downloadhandlebars.js-f990cf006422fbcbbae7d8a8a866831e58300ea4.zip
handlebars.js-f990cf006422fbcbbae7d8a8a866831e58300ea4.tar.gz
handlebars.js-f990cf006422fbcbbae7d8a8a866831e58300ea4.tar.bz2
Treat partial exec in a manner closer to helpers
This helps unify the code handling and will also be needed to support string/id tracking on partials.
Diffstat (limited to 'lib/handlebars/runtime.js')
-rw-r--r--lib/handlebars/runtime.js27
1 files changed, 13 insertions, 14 deletions
diff --git a/lib/handlebars/runtime.js b/lib/handlebars/runtime.js
index 05759cb..455dd33 100644
--- a/lib/handlebars/runtime.js
+++ b/lib/handlebars/runtime.js
@@ -35,36 +35,35 @@ export function template(templateSpec, env) {
// for external users to override these as psuedo-supported APIs.
env.VM.checkRevision(templateSpec.compiler);
- var invokePartialWrapper = function(partial, indent, name, context, hash, helpers, partials, data, depths) {
- if (hash) {
- context = Utils.extend({}, context, hash);
+ var invokePartialWrapper = function(partial, context, options) {
+ if (options.hash) {
+ context = Utils.extend({}, context, options.hash);
}
if (!partial) {
- partial = partials[name];
+ partial = options.partials[options.name];
}
- var result = env.VM.invokePartial.call(this, partial, name, context, helpers, partials, data, depths);
+ var result = env.VM.invokePartial.call(this, partial, context, options);
if (result == null && env.compile) {
- var options = { helpers: helpers, partials: partials, data: data, depths: depths };
- partials[name] = env.compile(partial, templateSpec.compilerOptions, env);
- result = partials[name](context, options);
+ options.partials[options.name] = env.compile(partial, templateSpec.compilerOptions, env);
+ result = options.partials[options.name](context, options);
}
if (result != null) {
- if (indent) {
+ if (options.indent) {
var lines = result.split('\n');
for (var i = 0, l = lines.length; i < l; i++) {
if (!lines[i] && i + 1 === l) {
break;
}
- lines[i] = indent + lines[i];
+ lines[i] = options.indent + lines[i];
}
result = lines.join('\n');
}
return result;
} else {
- throw new Exception("The partial " + name + " could not be compiled when running in runtime-only mode");
+ throw new Exception("The partial " + options.name + " could not be compiled when running in runtime-only mode");
}
};
@@ -172,11 +171,11 @@ export function program(container, i, fn, data, depths) {
return prog;
}
-export function invokePartial(partial, name, context, helpers, partials, data, depths) {
- var options = { partial: true, helpers: helpers, partials: partials, data: data, depths: depths };
+export function invokePartial(partial, context, options) {
+ options.partial = true;
if(partial === undefined) {
- throw new Exception("The partial " + name + " could not be found");
+ throw new Exception("The partial " + options.name + " could not be found");
} else if(partial instanceof Function) {
return partial(context, options);
}