UNPKG

@modern-kit/utils

Version:
45 lines (41 loc) 1.71 kB
'use strict'; var formatterFormatNumberWithCommas = require('../formatNumberWithCommas/index.cjs'); var validatorIsNumber = require('../../validator/isNumber/index.cjs'); const formatNumberWithConditionalCommas = (value, commas) => { return commas ? formatterFormatNumberWithCommas.formatNumberWithCommas(value) : value; }; const getFormattedNumberWithUnits = (value, options) => { const { units, commas = true, decimal = 0 } = options; const sortedUnits = [...units].sort((a, b) => b.value - a.value); const absoluteValue = Math.abs(value); const negativeSign = value < 0 ? "-" : ""; let formattedResult = ""; let remainingValue = absoluteValue; for (let i = 0; i < sortedUnits.length; i++) { const { unit, value: unitValue } = units[i]; const quotient = Math.floor(remainingValue / unitValue); const space = " "; if (quotient <= 0) continue; formattedResult += `${formatNumberWithConditionalCommas( quotient, commas )}${unit}${space}`; remainingValue %= unitValue; } if (remainingValue > 0) { formattedResult += `${formatNumberWithConditionalCommas( remainingValue.toFixed(decimal), commas )}`; } return `${negativeSign}${formattedResult.trim()}`; }; function formatNumberWithUnits(value, options) { const valueToUse = validatorIsNumber.isNumber(value) ? value : Number(value); if (isNaN(valueToUse)) { throw new Error("value\uB294 \uC22B\uC790 \uD639\uC740 \uC22B\uC790\uB85C \uC774\uB904\uC9C4 \uBB38\uC790\uC5F4\uC774\uC5EC\uC57C \uD569\uB2C8\uB2E4."); } return getFormattedNumberWithUnits(valueToUse, options); } exports.formatNumberWithUnits = formatNumberWithUnits; //# sourceMappingURL=index.cjs.map