Use objects for hash value tracking

The use of arrays was incorrect for the data type and causing problems when hash keys conflicted with array behaviors.

Fixes #1194
This commit is contained in:
kpdecker
2016-03-11 22:16:18 -06:00
parent 06baeaebfd
commit 768ddbd661
2 changed files with 12 additions and 1 deletions
@@ -503,7 +503,7 @@ JavaScriptCompiler.prototype = {
if (this.hash) {
this.hashes.push(this.hash);
}
this.hash = {values: [], types: [], contexts: [], ids: []};
this.hash = {values: {}};
},
popHash: function() {
let hash = this.hash;
+11
View File
@@ -277,4 +277,15 @@ describe('Regressions', function() {
shouldCompileTo(string, { listOne: ['a'], listTwo: ['b']}, 'ab', '');
});
it('should allow hash with protected array names', function() {
var obj = {array: [1], name: 'John'};
var helpers = {
helpa: function(options) {
return options.hash.length;
}
};
shouldCompileTo('{{helpa length="foo"}}', [obj, helpers], 'foo');
});
});