Fix #428 nested if else rendering
The program equality checker was not taking children into account when determining equality, causing breakages under similar cases.
This commit is contained in:
Vendored
+11
@@ -897,6 +897,17 @@ Compiler.prototype = {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
len = this.children.length;
|
||||||
|
if (other.children.length !== len) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
for (i = 0; i < len; i++) {
|
||||||
|
if (!this.children[i].equals(other.children[i])) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
},
|
},
|
||||||
|
|
||||||
|
|||||||
@@ -59,6 +59,17 @@ Compiler.prototype = {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
len = this.children.length;
|
||||||
|
if (other.children.length !== len) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
for (i = 0; i < len; i++) {
|
||||||
|
if (!this.children[i].equals(other.children[i])) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
},
|
},
|
||||||
|
|
||||||
|
|||||||
@@ -1384,3 +1384,16 @@ test('GH-408: Multiple loops fail', function() {
|
|||||||
var result = template(context);
|
var result = template(context);
|
||||||
equals(result, "John DoeJane DoeJohn DoeJane DoeJohn DoeJane Doe", 'It should output multiple times');
|
equals(result, "John DoeJane DoeJohn DoeJane DoeJohn DoeJane Doe", 'It should output multiple times');
|
||||||
});
|
});
|
||||||
|
|
||||||
|
test('GS-428: Nested if else rendering', function() {
|
||||||
|
var succeedingTemplate = '{{#inverse}} {{#blk}} Unexpected {{/blk}} {{else}} {{#blk}} Expected {{/blk}} {{/inverse}}';
|
||||||
|
var failingTemplate = '{{#inverse}} {{#blk}} Unexpected {{/blk}} {{else}} {{#blk}} Expected {{/blk}} {{/inverse}}';
|
||||||
|
|
||||||
|
var helpers = {
|
||||||
|
blk: function(block) { return block.fn(''); },
|
||||||
|
inverse: function(block) { return block.inverse(''); }
|
||||||
|
};
|
||||||
|
|
||||||
|
shouldCompileTo(succeedingTemplate, [{}, helpers], ' Expected ');
|
||||||
|
shouldCompileTo(failingTemplate, [{}, helpers], ' Expected ');
|
||||||
|
});
|
||||||
|
|||||||
Reference in New Issue
Block a user