summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorkpdecker <kpdecker@gmail.com>2015-12-12 15:27:56 -0600
committerLon Ingram <lawnsea@gmail.com>2016-11-11 12:01:16 -0600
commitc393c815619bac0b4fee44a88323c09be48b6318 (patch)
tree9af56ba174a4468e7e279ebe0c93f926674aceac
parent205c61cfb1acdb599bbdfcf2d356641254e09e5c (diff)
downloadhandlebars.js-c393c815619bac0b4fee44a88323c09be48b6318.zip
handlebars.js-c393c815619bac0b4fee44a88323c09be48b6318.tar.gz
handlebars.js-c393c815619bac0b4fee44a88323c09be48b6318.tar.bz2
Relax depth check for context push
Fixes #1135
-rw-r--r--lib/handlebars/runtime.js4
-rw-r--r--spec/regressions.js23
2 files changed, 25 insertions, 2 deletions
diff --git a/lib/handlebars/runtime.js b/lib/handlebars/runtime.js
index b47d961..70493ce 100644
--- a/lib/handlebars/runtime.js
+++ b/lib/handlebars/runtime.js
@@ -140,7 +140,7 @@ export function template(templateSpec, env) {
blockParams = templateSpec.useBlockParams ? [] : undefined;
if (templateSpec.useDepths) {
if (options.depths) {
- depths = context !== options.depths[0] ? [context].concat(options.depths) : options.depths;
+ depths = context != options.depths[0] ? [context].concat(options.depths) : options.depths;
} else {
depths = [context];
}
@@ -187,7 +187,7 @@ export function template(templateSpec, env) {
export function wrapProgram(container, i, fn, data, declaredBlockParams, blockParams, depths) {
function prog(context, options = {}) {
let currentDepths = depths;
- if (depths && context !== depths[0]) {
+ if (depths && context != depths[0]) {
currentDepths = [context].concat(depths);
}
diff --git a/spec/regressions.js b/spec/regressions.js
index 83765a2..9bd00d9 100644
--- a/spec/regressions.js
+++ b/spec/regressions.js
@@ -247,4 +247,27 @@ describe('Regressions', function() {
};
shouldCompileToWithPartials(string, [{}, {}, partials], true, 'Outer');
});
+
+ it('GH-1135 : Context handling within each iteration', function() {
+ var obj = {array: [1], name: 'John'};
+ var helpers = {
+ myif: function(conditional, options) {
+ if (conditional) {
+ return options.fn(this);
+ } else {
+ return options.inverse(this);
+ }
+ }
+ };
+
+ shouldCompileTo(`
+ {{#each array}}
+ 1. IF: {{#if true}}{{../name}}-{{../../name}}-{{../../../name}}{{/if}}
+ 2. MYIF: {{#myif true}}{{../name}}={{../../name}}={{../../../name}}{{/myif}}
+ {{/each}}
+ `, [obj, helpers], `
+ 1. IF: John--
+ 2. MYIF: John==
+ `);
+ });
});