Skip to content

Commit d5a1f9d

Browse files
committed
Adding language overriding via optional suffixes dictionary
Adding a unit test for language overriding Changing key
1 parent d68c555 commit d5a1f9d

7 files changed

+40
-24
lines changed

README.md

+4
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,9 @@ _***(number)***_ Decimal place, default is `2`
2222
### spacer
2323
_***(string)***_ Character between the `result` and `suffix`, default is `" "`
2424

25+
### suffixes
26+
_***(object)***_ Dictionary of SI suffixes to replace for localization, defaults to english if no match is found
27+
2528
## Examples
2629

2730
```javascript
@@ -30,6 +33,7 @@ filesize(500, {bits: true}); // "4.00 kb"
3033
filesize(265318); // "265.32 kB"
3134
filesize(265318, {base: 2}); // "259.10 kB"
3235
filesize(265318, {base: 2, round: 1}); // "259.1 kB"
36+
filesize(1, {suffixes: {B: "Б"}}); // "1 Б"
3337
```
3438

3539
## How can I load filesize.js?

lib/filesize.js

+11-9
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,11 @@
22
* filesize
33
*
44
* @author Jason Mulligan <[email protected]>
5-
* @copyright 2013 Jason Mulligan
5+
* @copyright 2014 Jason Mulligan
66
* @license BSD-3 <https://raw.github.com/avoidwork/filesize.js/master/LICENSE>
77
* @link http://filesizejs.com
88
* @module filesize
9-
* @version 2.0.0
9+
* @version 2.0.1
1010
*/
1111
( function ( global ) {
1212
"use strict";
@@ -29,7 +29,7 @@ function filesize ( arg, descriptor ) {
2929
var result = "",
3030
skip = false,
3131
i = 6,
32-
base, bits, neg, num, round, size, sizes, unix, spacer, suffix, z;
32+
base, bits, neg, num, round, size, sizes, unix, spacer, suffix, z, suffixes;
3333

3434
if ( isNaN( arg ) ) {
3535
throw new Error( "Invalid arguments" );
@@ -38,9 +38,10 @@ function filesize ( arg, descriptor ) {
3838
descriptor = descriptor || {};
3939
bits = ( descriptor.bits === true );
4040
unix = ( descriptor.unix === true );
41-
base = descriptor.base !== undefined ? descriptor.base : unix ? 2 : 10;
42-
round = descriptor.round !== undefined ? descriptor.round : unix ? 1 : 2;
43-
spacer = descriptor.spacer !== undefined ? descriptor.spacer : unix ? "" : " ";
41+
base = descriptor.base !== undefined ? descriptor.base : unix ? 2 : 10;
42+
round = descriptor.round !== undefined ? descriptor.round : unix ? 1 : 2;
43+
spacer = descriptor.spacer !== undefined ? descriptor.spacer : unix ? "" : " ";
44+
suffixes = descriptor.suffixes !== undefined ? descriptor.suffixes : {};
4445
num = Number( arg );
4546
neg = ( num < 0 );
4647

@@ -55,7 +56,8 @@ function filesize ( arg, descriptor ) {
5556
result = "0";
5657
}
5758
else {
58-
result = "0" + spacer + "B";
59+
suffix = "B";
60+
result = "0" + spacer + ( suffixes[suffix] || suffix );
5961
}
6062
}
6163
else {
@@ -90,10 +92,10 @@ function filesize ( arg, descriptor ) {
9092
result = parseInt( result, radix );
9193
}
9294

93-
result += spacer + suffix;
95+
result += spacer + ( suffixes[suffix] || suffix );
9496
}
9597
else if ( !unix ) {
96-
result += spacer + suffix;
98+
result += spacer + ( suffixes[suffix] || suffix );
9799
}
98100

99101
break;

lib/filesize.map

+2-2
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
"version":3,
33
"file":"filesize.min.js",
44
"lineCount":10,
5-
"mappings":"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",
5+
"mappings":"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",
66
"sources":["filesize.js"],
7-
"names":["global","filesize","arg","descriptor","result","skip","i","base","bits","neg","num","round","size","sizes","unix","spacer","isNaN","Error","undefined","Number","options","suffix","bite","test","toFixed","bit","toLowerCase","charAt","z","right","exec","zero","parseInt","radix","exports","module","define"]
7+
"names":["global","filesize","arg","descriptor","result","skip","i","base","bits","neg","num","round","size","sizes","unix","spacer","suffixes","isNaN","Error","undefined","Number","suffix","options","bite","test","toFixed","bit","toLowerCase","charAt","z","right","exec","zero","parseInt","radix","exports","module","define"]
88
}

lib/filesize.min.js

+5-5
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
{
22
"name": "filesize",
33
"description": "JavaScript library to generate a human readable String describing the file size",
4-
"version": "2.0.0",
4+
"version": "2.0.1",
55
"homepage": "http://filesizejs.com",
66
"author": {
77
"name": "Jason Mulligan",

src/filesize.js

+9-7
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ function filesize ( arg, descriptor ) {
1010
var result = "",
1111
skip = false,
1212
i = 6,
13-
base, bits, neg, num, round, size, sizes, unix, spacer, suffix, z;
13+
base, bits, neg, num, round, size, sizes, unix, spacer, suffix, z, suffixes;
1414

1515
if ( isNaN( arg ) ) {
1616
throw new Error( "Invalid arguments" );
@@ -19,9 +19,10 @@ function filesize ( arg, descriptor ) {
1919
descriptor = descriptor || {};
2020
bits = ( descriptor.bits === true );
2121
unix = ( descriptor.unix === true );
22-
base = descriptor.base !== undefined ? descriptor.base : unix ? 2 : 10;
23-
round = descriptor.round !== undefined ? descriptor.round : unix ? 1 : 2;
24-
spacer = descriptor.spacer !== undefined ? descriptor.spacer : unix ? "" : " ";
22+
base = descriptor.base !== undefined ? descriptor.base : unix ? 2 : 10;
23+
round = descriptor.round !== undefined ? descriptor.round : unix ? 1 : 2;
24+
spacer = descriptor.spacer !== undefined ? descriptor.spacer : unix ? "" : " ";
25+
suffixes = descriptor.suffixes !== undefined ? descriptor.suffixes : {};
2526
num = Number( arg );
2627
neg = ( num < 0 );
2728

@@ -36,7 +37,8 @@ function filesize ( arg, descriptor ) {
3637
result = "0";
3738
}
3839
else {
39-
result = "0" + spacer + "B";
40+
suffix = "B";
41+
result = "0" + spacer + ( suffixes[suffix] || suffix );
4042
}
4143
}
4244
else {
@@ -71,10 +73,10 @@ function filesize ( arg, descriptor ) {
7173
result = parseInt( result, radix );
7274
}
7375

74-
result += spacer + suffix;
76+
result += spacer + ( suffixes[suffix] || suffix );
7577
}
7678
else if ( !unix ) {
77-
result += spacer + suffix;
79+
result += spacer + ( suffixes[suffix] || suffix );
7880
}
7981

8082
break;

test/filesize_test.js

+8
Original file line numberDiff line numberDiff line change
@@ -103,6 +103,14 @@ exports["filesize"] = {
103103
invalid: function (test) {
104104
test.expect(1);
105105
test.throws(function () { filesize(this.invld) }, Error, "Should match");
106+
test.done();
107+
},
108+
suffixes: function (test) {
109+
test.expect(2);
110+
111+
test.equal(filesize(this.byte, {suffixes: {B: "Б"}}), "1 Б", "Should be '1 Б'");
112+
test.equal(filesize(this.kilobyte, {suffixes: {B: "Б"}}), "1.02 kB", "Should be '1.02 kB'");
113+
106114
test.done();
107115
}
108116
};

0 commit comments

Comments
 (0)