UNPKG

@ribajs/core

Version:

Core module of Riba.js

34 lines 3.53 kB
import { isNumber } from "@ribajs/utils/src/type.js"; import { toDecimalFormatter } from "../type/to-decimal.formatter.js"; import { isIntegerFormatter } from "../type/is-integer.formatter.js"; const DEFAULT_DECIMAL_SEPARATOR = "."; const DEFAULT_THOUSAND_SEPARATOR = "'"; const DEFAULT_PRECISION = 2; export const numberFormatFormatter = { name: "numberFormat", read(target, precision = DEFAULT_PRECISION, decimalSeparator = DEFAULT_DECIMAL_SEPARATOR, thousandSeparator = DEFAULT_THOUSAND_SEPARATOR) { if (!toDecimalFormatter.read) { throw new Error("toDecimalFormatter must have a read function"); } if (!isIntegerFormatter.read) { throw new Error("isIntegerFormatter must have a read function"); } target = isNumber(target) ? target : toDecimalFormatter.read(target); if (!isIntegerFormatter.read(precision)) { precision = DEFAULT_PRECISION; } let retStr = (+(Math.round(+(Math.abs(target) + "e" + precision)) + "e" + -precision)).toFixed(precision); if (target < 0) retStr = "-" + retStr; const ret = retStr.split("."); if (ret.length == 2) { return (ret[0].replace(/\B(?=(\d{3})+(?!\d))/g, thousandSeparator) + decimalSeparator + ret[1]); } return ret[0].replace(/\B(?=(\d{3})+(?!\d))/g, thousandSeparator); }, }; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibnVtYmVyLWZvcm1hdC5mb3JtYXR0ZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvZm9ybWF0dGVycy9zdHJpbmcvbnVtYmVyLWZvcm1hdC5mb3JtYXR0ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ3JELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQ3JFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBR3JFLE1BQU0seUJBQXlCLEdBQUcsR0FBRyxDQUFDO0FBQ3RDLE1BQU0sMEJBQTBCLEdBQUcsR0FBRyxDQUFDO0FBQ3ZDLE1BQU0saUJBQWlCLEdBQUcsQ0FBQyxDQUFDO0FBTTVCLE1BQU0sQ0FBQyxNQUFNLHFCQUFxQixHQUFjO0lBQzlDLElBQUksRUFBRSxjQUFjO0lBU3BCLElBQUksQ0FDRixNQUFjLEVBQ2QsU0FBUyxHQUFHLGlCQUFpQixFQUM3QixnQkFBZ0IsR0FBRyx5QkFBeUIsRUFDNUMsaUJBQWlCLEdBQUcsMEJBQTBCO1FBRTlDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUM3QixNQUFNLElBQUksS0FBSyxDQUFDLDhDQUE4QyxDQUFDLENBQUM7UUFDbEUsQ0FBQztRQUNELElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUM3QixNQUFNLElBQUksS0FBSyxDQUFDLDhDQUE4QyxDQUFDLENBQUM7UUFDbEUsQ0FBQztRQUNELE1BQU0sR0FBRyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBRXJFLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQztZQUN4QyxTQUFTLEdBQUcsaUJBQWlCLENBQUM7UUFDaEMsQ0FBQztRQU1ELElBQUksTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUNiLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLEdBQUcsR0FBRyxHQUFHLFNBQVMsQ0FBQyxDQUFDO1lBQ2pELEdBQUc7WUFDSCxDQUFDLFNBQVMsQ0FDWCxDQUFDLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQ3RCLElBQUksTUFBTSxHQUFHLENBQUM7WUFBRSxNQUFNLEdBQUcsR0FBRyxHQUFHLE1BQU0sQ0FBQztRQU10QyxNQUFNLEdBQUcsR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQzlCLElBQUksR0FBRyxDQUFDLE1BQU0sSUFBSSxDQUFDLEVBQUUsQ0FBQztZQUNwQixPQUFPLENBQ0wsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyx1QkFBdUIsRUFBRSxpQkFBaUIsQ0FBQztnQkFDMUQsZ0JBQWdCO2dCQUNoQixHQUFHLENBQUMsQ0FBQyxDQUFDLENBQ1AsQ0FBQztRQUNKLENBQUM7UUFFRCxPQUFPLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsdUJBQXVCLEVBQUUsaUJBQWlCLENBQUMsQ0FBQztJQUNwRSxDQUFDO0NBQ0YsQ0FBQyJ9