Skip to content

Commit

Permalink
Merge branch 'fix-prefix'
Browse files Browse the repository at this point in the history
  • Loading branch information
mbostock committed Feb 18, 2014
2 parents aaa3585 + 0cb6cd9 commit 04fa5dd
Show file tree
Hide file tree
Showing 9 changed files with 38 additions and 11 deletions.
2 changes: 1 addition & 1 deletion bower.json
@@ -1,6 +1,6 @@
{
"name": "d3",
"version": "3.4.1",
"version": "3.4.2",
"main": "d3.js",
"scripts": [
"d3.js"
Expand Down
2 changes: 1 addition & 1 deletion component.json
Expand Up @@ -10,7 +10,7 @@
"animation",
"canvas"
],
"version": "3.4.1",
"version": "3.4.2",
"main": "d3.js",
"scripts": [
"d3.js"
Expand Down
7 changes: 4 additions & 3 deletions d3.js
@@ -1,6 +1,6 @@
!function() {
var d3 = {
version: "3.4.1"
version: "3.4.2"
};
if (!Date.now) Date.now = function() {
return +new Date();
Expand Down Expand Up @@ -2191,12 +2191,13 @@
type = d3_format_types.get(type) || d3_format_typeDefault;
var zcomma = zfill && comma;
return function(value) {
var fullSuffix = suffix;
if (integer && value % 1) return "";
var negative = value < 0 || value === 0 && 1 / value < 0 ? (value = -value, "-") : sign;
if (scale < 0) {
var unit = d3.formatPrefix(value, precision);
value = unit.scale(value);
suffix = unit.symbol;
fullSuffix = unit.symbol + suffix;
} else {
value *= scale;
}
Expand All @@ -2207,7 +2208,7 @@
if (zcomma) before = formatGroup(padding + before);
negative += prefix;
value = before + after;
return (align === "<" ? negative + value + padding : align === ">" ? padding + negative + value : align === "^" ? padding.substring(0, length >>= 1) + negative + value + padding.substring(length) : negative + (zcomma ? value : padding + value)) + suffix;
return (align === "<" ? negative + value + padding : align === ">" ? padding + negative + value : align === "^" ? padding.substring(0, length >>= 1) + negative + value + padding.substring(length) : negative + (zcomma ? value : padding + value)) + fullSuffix;
};
};
}
Expand Down
4 changes: 2 additions & 2 deletions d3.min.js

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion package.json
@@ -1,6 +1,6 @@
{
"name": "d3",
"version": "3.4.1",
"version": "3.4.2",
"description": "A small, free JavaScript library for manipulating documents based on data.",
"keywords": [
"dom",
Expand Down
6 changes: 4 additions & 2 deletions src/locale/number-format.js
Expand Up @@ -74,6 +74,7 @@ function d3_locale_numberFormat(locale) {
var zcomma = zfill && comma;

return function(value) {
var fullSuffix = suffix;

// Return the empty string for floats formatted as ints.
if (integer && (value % 1)) return "";
Expand All @@ -82,10 +83,11 @@ function d3_locale_numberFormat(locale) {
var negative = value < 0 || value === 0 && 1 / value < 0 ? (value = -value, "-") : sign;

// Apply the scale, computing it from the value's exponent for si format.
// Preserve the existing suffix, if any, such as the currency symbol.
if (scale < 0) {
var unit = d3.formatPrefix(value, precision);
value = unit.scale(value);
suffix = unit.symbol;
fullSuffix = unit.symbol + suffix;
} else {
value *= scale;
}
Expand Down Expand Up @@ -116,7 +118,7 @@ function d3_locale_numberFormat(locale) {
return (align === "<" ? negative + value + padding
: align === ">" ? padding + negative + value
: align === "^" ? padding.substring(0, length >>= 1) + negative + value + padding.substring(length)
: negative + (zcomma ? value : padding + value)) + suffix;
: negative + (zcomma ? value : padding + value)) + fullSuffix;
};
};
}
Expand Down
2 changes: 1 addition & 1 deletion src/start.js
@@ -1,2 +1,2 @@
!function(){
var d3 = {version: "3.4.1"}; // semver
var d3 = {version: "3.4.2"}; // semver
20 changes: 20 additions & 0 deletions test/format/format-test.js
Expand Up @@ -101,6 +101,26 @@ suite.addBatch({
assert.strictEqual(f(999500), "999.5k");
assert.strictEqual(f(.009995), "9.995m");
},
"can output SI prefix notation with appropriate rounding and currency symbol": function(format) {
var f = format("$.3s");
assert.strictEqual(f(0), "$0.00");
assert.strictEqual(f(1), "$1.00");
assert.strictEqual(f(10), "$10.0");
assert.strictEqual(f(100), "$100");
assert.strictEqual(f(999.5), "$1.00k");
assert.strictEqual(f(999500), "$1.00M");
assert.strictEqual(f(1000), "$1.00k");
assert.strictEqual(f(1500.5), "$1.50k");
assert.strictEqual(f(145500000), "$146M");
assert.strictEqual(f(145999999.999999347), "$146M");
assert.strictEqual(f(1e26), "$100Y");
assert.strictEqual(f(.000001), "$1.00µ");
assert.strictEqual(f(.009995), "$0.0100");
var f = format("$.4s");
assert.strictEqual(f(999.5), "$999.5");
assert.strictEqual(f(999500), "$999.5k");
assert.strictEqual(f(.009995), "$9.995m");
},
"can output a currency": function(format) {
var f = format("$");
assert.strictEqual(f(0), "$0");
Expand Down
4 changes: 4 additions & 0 deletions test/locale/locale-test.js
Expand Up @@ -21,6 +21,10 @@ suite.addBatch({
"formats currencies": function(format) {
var f = format("$,.2f");
assert.equal(f(12345.67), "12 345,67 руб.");
},
"formats currencies with SI-prefix notation and currency suffix": function(format) {
var f = format("$,.4s");
assert.equal(f(12345.67), "12,35k руб.");
}
},

Expand Down

0 comments on commit 04fa5dd

Please sign in to comment.