diff options
author | kpdecker <kpdecker@gmail.com> | 2014-01-17 20:01:43 -0600 |
---|---|---|
committer | kpdecker <kpdecker@gmail.com> | 2014-01-17 23:15:18 -0600 |
commit | 49fcf10de21b89c504d641e72ce6c31c2feaed8f (patch) | |
tree | 5d974781339357d0f35590968b520df4f88fa3c3 /lib/handlebars/base.js | |
parent | ace2896ec876104f5bd220744124e7370fe6b9a2 (diff) | |
download | handlebars.js-49fcf10de21b89c504d641e72ce6c31c2feaed8f.zip handlebars.js-49fcf10de21b89c504d641e72ce6c31c2feaed8f.tar.gz handlebars.js-49fcf10de21b89c504d641e72ce6c31c2feaed8f.tar.bz2 |
Add contextPath tracking in builtin helpers
Diffstat (limited to 'lib/handlebars/base.js')
-rw-r--r-- | lib/handlebars/base.js | 34 |
1 files changed, 32 insertions, 2 deletions
diff --git a/lib/handlebars/base.js b/lib/handlebars/base.js index 790228c..9dc49fc 100644 --- a/lib/handlebars/base.js +++ b/lib/handlebars/base.js @@ -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) { |