-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathnumscale.js
More file actions
66 lines (48 loc) · 1.31 KB
/
numscale.js
File metadata and controls
66 lines (48 loc) · 1.31 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
exports.scale = function (input) {
// input should be an object with members 'value', 'powerOf', 'maxLen'
var num = input.value;
var result = '';
var suffix = ['', 'K', 'M', 'G', 'T', 'P'];
var index = 0, save = 0;
var divisor;
var powerOf = input.powerOf || 10;
var maxLen = input.maxLen || 20;
if (powerOf == 10) {
divisor = 1000;
} else if (powerOf == 2) {
divisor = 1024;
} else {
throw (new Error('invalid powerOf argument'));
}
if (input.value < Number.MIN_SAFE_INTEGER ||
input.value > Number.MAX_SAFE_INTEGER) {
return ('Err');
}
while (num >= divisor) {
num = num / divisor;
index++;
}
maxLen -= suffix[index].length; // allow for suffix character(s)
result = num.toString();
for (var p = result.length; result.length > maxLen; p--) {
if (p < 1) return ('Err');
result = num.toPrecision(p);
}
return (result + suffix[index]);
};
exports.padl = function (str, len) {
// pad the left side of a string with spaces until it reaches 'len'
var rval = '', i;
for (i = 0; i < len - str.length; i++)
rval += ' ';
rval += str;
return (rval);
}
exports.padr = function (str, len) {
// pad the right side of a string with spaces until it reaches 'len'
var rval = '', i;
rval += str;
for (i = 0; i < len - str.length; i++)
rval += ' ';
return (rval);
}