73 lines
2.1 KiB
JavaScript
73 lines
2.1 KiB
JavaScript
const { padNumber, formatNumber } = require('../core/util');
|
|
|
|
module.exports = {
|
|
|
|
floor: function(num) {
|
|
return Math.floor(Number(num));
|
|
},
|
|
|
|
ceil: function(num) {
|
|
return Math.ceil(Number(num));
|
|
},
|
|
|
|
round: function(num) {
|
|
return Math.round(Number(num));
|
|
},
|
|
|
|
abs: function(num) {
|
|
return Math.abs(Number(num));
|
|
},
|
|
|
|
pow: function(num, exp) {
|
|
return Math.pow(num, exp);
|
|
},
|
|
|
|
padNumber: function(num, digids) {
|
|
num = Number(num);
|
|
|
|
if (isNaN(num) || !isFinite(num)) return 'NaN';
|
|
|
|
return padNumber(num, digids);
|
|
},
|
|
|
|
formatNumber: function(num, decimals, decimalSeparator, groupingSeparator) {
|
|
return formatNumber(num, decimals, decimalSeparator, groupingSeparator);
|
|
},
|
|
|
|
hex: function(num) {
|
|
return parseInt(String(num), 16) || NaN;
|
|
},
|
|
|
|
currency: function(num, unit, decimalSeparator, groupingSeparator, decimals) {
|
|
unit = typeof unit == 'string' ? unit : '$';
|
|
decimalSeparator = typeof decimalSeparator == 'string' ? decimalSeparator : '.';
|
|
groupingSeparator = typeof groupingSeparator == 'string' ? groupingSeparator : ',';
|
|
decimals = typeof decimals == 'number' ? Math.abs(decimals) : 2;
|
|
|
|
let formatted = formatNumber(num, decimals, decimalSeparator, groupingSeparator);
|
|
let minus = formatted[0] == '-';
|
|
|
|
return (minus ? '-' : '') + unit + formatted.replace(/^\-/, '');
|
|
},
|
|
|
|
formatSize: function(num, decimals, binary) {
|
|
num = Number(num);
|
|
|
|
if (isNaN(num) || !isFinite(num)) return 'NaN';
|
|
|
|
decimals = typeof decimals == 'number' ? Math.abs(decimals) : 2;
|
|
|
|
let base = binary ? 1024 : 1000;
|
|
let suffix = binary ? ['KiB', 'MiB', 'GiB', 'TiB'] : ['kB', 'MB', 'GB', 'TB'];
|
|
|
|
for (let i = 3; i >= 0; i--) {
|
|
let n = Math.pow(base, i + 1);
|
|
if (num >= n) {
|
|
return formatNumber(num / n, decimals) + suffix[i];
|
|
}
|
|
}
|
|
|
|
return num + 'B';
|
|
},
|
|
|
|
}; |