Add contextPath tracking in builtin helpers

This commit is contained in:
kpdecker
2014-01-17 20:01:43 -06:00
parent ace2896ec8
commit 49fcf10de2
3 changed files with 91 additions and 2 deletions
+32 -2
View File
@@ -70,12 +70,19 @@ function registerDefaultHelpers(instance) {
return inverse(this);
} else if (isArray(context)) {
if(context.length > 0) {
options.ids = [options.name];
return instance.helpers.each(context, options);
} else {
return inverse(this);
}
} else {
return fn(context);
if (options.ids) {
var data = createFrame(options.data);
data.contextPath = Utils.appendContextPath(options.data.contextPath, options.name);
options = {data: data};
}
return fn(context, options);
}
});
@@ -89,6 +96,11 @@ function registerDefaultHelpers(instance) {
var fn = options.fn, inverse = options.inverse;
var i = 0, ret = "", data;
var contextPath;
if (options.ids) {
contextPath = Utils.appendContextPath(options.data.contextPath, options.ids[0]) + '.';
}
if (isFunction(context)) { context = context.call(this); }
if (options.data) {
@@ -102,6 +114,10 @@ function registerDefaultHelpers(instance) {
data.index = i;
data.first = (i === 0);
data.last = (i === (context.length-1));
if (contextPath) {
data.contextPath = contextPath + i;
}
}
ret = ret + fn(context[i], { data: data });
}
@@ -112,6 +128,10 @@ function registerDefaultHelpers(instance) {
data.key = key;
data.index = i;
data.first = (i === 0);
if (contextPath) {
data.contextPath = contextPath + key;
}
}
ret = ret + fn(context[key], {data: data});
i++;
@@ -147,7 +167,17 @@ function registerDefaultHelpers(instance) {
instance.registerHelper('with', function(context, options) {
if (isFunction(context)) { context = context.call(this); }
if (!Utils.isEmpty(context)) return options.fn(context);
var fn = options.fn;
if (!Utils.isEmpty(context)) {
if (options.ids) {
var data = createFrame(options.data);
data.contextPath = Utils.appendContextPath(options.data.contextPath, options.ids[0]);
options = {data:data};
}
return fn(context, options);
}
});
instance.registerHelper('log', function(context, options) {
+4
View File
@@ -75,3 +75,7 @@ export function isEmpty(value) {
return false;
}
}
export function appendContextPath(contextPath, id) {
return (contextPath ? contextPath + '.' : '') + id;
}