Skip to content

Commit 54ca304

Browse files
committed
selection.classed: coerce name to string.
Fixes d3#1625.
1 parent db8d305 commit 54ca304

4 files changed

Lines changed: 12 additions & 3 deletions

File tree

d3.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -627,7 +627,7 @@
627627
return new RegExp("(?:^|\\s+)" + d3.requote(name) + "(?:\\s+|$)", "g");
628628
}
629629
function d3_selection_classes(name) {
630-
return name.trim().split(/^|\s+/);
630+
return (name + "").trim().split(/^|\s+/);
631631
}
632632
function d3_selection_classed(name, value) {
633633
name = d3_selection_classes(name).map(d3_selection_classedName);

d3.min.js

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

src/selection/classed.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ function d3_selection_classedRe(name) {
3636
}
3737

3838
function d3_selection_classes(name) {
39-
return name.trim().split(/^|\s+/);
39+
return (name + "").trim().split(/^|\s+/);
4040
}
4141

4242
// Multiple class names are allowed (e.g., "foo bar").

test/selection/classed-test.js

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -101,6 +101,15 @@ suite.addBatch({
101101
assert.equal(body.node().className, "");
102102
assert.isTrue(body.classed(""));
103103
},
104+
"coerces name to a string": function(body) {
105+
body.attr("class", null);
106+
body.classed(undefined, true);
107+
assert.equal(body.node().className, "undefined");
108+
body.classed(null, true);
109+
assert.equal(body.node().className, "undefined null");
110+
body.classed({toString: function() { return "foo bar"; }}, true);
111+
assert.equal(body.node().className, "undefined null foo bar");
112+
},
104113
"accepts a value function returning true or false": function(body) {
105114
body.attr("class", null);
106115
body.classed("foo", function() { return true; });

0 commit comments

Comments
 (0)