Skip to content

Commit

Permalink
Fix d3#1413 - d3.map copy constructor.
Browse files Browse the repository at this point in the history
  • Loading branch information
mbostock committed Jul 21, 2013
1 parent dddef32 commit c14858b
Show file tree
Hide file tree
Showing 4 changed files with 16 additions and 5 deletions.
4 changes: 3 additions & 1 deletion d3.js
Original file line number Diff line number Diff line change
Expand Up @@ -204,7 +204,9 @@ d3 = function() {
}
d3.map = function(object) {
var map = new d3_Map();
for (var key in object) map.set(key, object[key]);
if (object && object.forEach) object.forEach(function(key, value) {
map.set(key, value);
}); else for (var key in object) map.set(key, object[key]);
return map;
};
function d3_Map() {}
Expand Down
6 changes: 3 additions & 3 deletions d3.min.js

Large diffs are not rendered by default.

3 changes: 2 additions & 1 deletion src/arrays/map.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,8 @@ import "../core/class";

d3.map = function(object) {
var map = new d3_Map;
for (var key in object) map.set(key, object[key]);
if (object && object.forEach) object.forEach(function(key, value) { map.set(key, value); });
else for (var key in object) map.set(key, object[key]);
return map;
};

Expand Down
8 changes: 8 additions & 0 deletions test/arrays/map-test.js
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,14 @@ suite.addBatch({
var m = map(Object.create(null, {foo: {value: 42, enumerable: false}}));
assert.isFalse(m.has("foo"));
assert.isUndefined(m.get("foo"));
},
"map(map) copies the given map": function(map) {
var a = map({foo: 42}),
b = map(a);
assert.isTrue(b.has("foo"));
assert.equal(b.get("foo"), 42);
a.set("bar", true);
assert.isFalse(b.has("bar"));
}
},
"forEach": {
Expand Down

0 comments on commit c14858b

Please sign in to comment.