Skip to content

Commit 4639b80

Browse files
committed
Fix Hash.[] with single Array parameter
1 parent eb543eb commit 4639b80

File tree

1 file changed

+20
-6
lines changed

1 file changed

+20
-6
lines changed

corelib/hash.rb

Lines changed: 20 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -8,21 +8,35 @@ class Hash
88
}
99
1010
var hash = new Hash._alloc,
11-
args = $slice.call(arguments),
1211
keys = [],
1312
assocs = {};
1413
1514
hash.map = assocs;
1615
hash.keys = keys;
1716
18-
for (var i = 0, length = args.length, key; i < length; i++) {
19-
var key = args[i], obj = args[++i];
17+
if (arguments.length == 1 && arguments[0]._isArray) {
18+
var args = arguments[0];
2019
21-
if (assocs[key] == null) {
22-
keys.push(key);
20+
for (var i = 0, length = args.length; i < length; i++) {
21+
var key = args[i][0], obj = args[i][1];
22+
23+
if (assocs[key] == null) {
24+
keys.push(key);
25+
}
26+
27+
assocs[key] = obj;
2328
}
29+
}
30+
else {
31+
for (var i = 0, length = arguments.length, key; i < length; i++) {
32+
var key = arguments[i], obj = arguments[++i];
2433
25-
assocs[key] = obj;
34+
if (assocs[key] == null) {
35+
keys.push(key);
36+
}
37+
38+
assocs[key] = obj;
39+
}
2640
}
2741
2842
return hash;

0 commit comments

Comments
 (0)