UNPKG

@iimm/shared

Version:

shared utils on browser and react env

113 lines (111 loc) 4.06 kB
var __defProp = Object.defineProperty; var __getOwnPropDesc = Object.getOwnPropertyDescriptor; var __getOwnPropNames = Object.getOwnPropertyNames; var __hasOwnProp = Object.prototype.hasOwnProperty; var __export = (target, all) => { for (var name in all) __defProp(target, name, { get: all[name], enumerable: true }); }; var __copyProps = (to, from, except, desc) => { if (from && typeof from === "object" || typeof from === "function") { for (let key of __getOwnPropNames(from)) if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); } return to; }; var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); // src/cjs/number/index.ts var number_exports = {}; __export(number_exports, { isNumberBetween: () => isNumberBetween, numberToChinese: () => numberToChinese }); module.exports = __toCommonJS(number_exports); var isNumberBetween = (number, options) => { const { min, max, equal } = options || {}; const minType = typeof min; const maxType = typeof max; if (minType === "undefined" && maxType === "undefined") return false; if (minType !== "undefined" && minType !== "number") return false; if (maxType !== "undefined" && maxType !== "number") return false; const num = +number; if (isNaN(num)) return false; const [minEqual, maxEqual] = Array.isArray(equal) ? equal : [equal, equal]; let isBetween = true; if (minType !== "undefined") { isBetween = minEqual ? num >= min : num > min; } if (maxType !== "undefined") { isBetween = isBetween && (maxEqual ? num <= max : num < max); } return isBetween; }; var numberToChinese = (number, options = { case: "upper" }) => { const confs = { lower: { num: ["零", "一", "二", "三", "四", "五", "六", "七", "八", "九"], unit: ["", "十", "百", "千", "万"], level: ["", "万", "亿"] }, upper: { num: ["零", "壹", "贰", "叁", "肆", "伍", "陆", "柒", "捌", "玖"], unit: ["", "拾", "佰", "仟"], level: ["", "万", "亿"] }, decimal: { unit: ["分", "角"] }, maxNumber: 99999999999999e-2 }; if (Number(number) > confs.maxNumber) { console.error( `The maxNumber is ${confs.maxNumber}. ${number} is bigger than it!` ); return null; } const conf = confs[(options == null ? void 0 : options.case) || "upper"]; const numbers = String(Number(number).toFixed(2)).split("."); const integer = numbers[0].split(""); const decimal = Number(numbers[1]) === 0 ? [] : numbers[1].split(""); const levels = integer.reverse().reduce((pre, item, idx) => { const level = pre[0] && pre[0].length < 4 ? pre[0] : []; const value = item === "0" ? conf.num[item] : conf.num[item] + conf.unit[idx % 4]; level.unshift(value); if (level.length === 1) { pre.unshift(level); } else { pre[0] = level; } return pre; }, []); const _integer = levels.reduce((pre, item, idx) => { let _level = conf.level[levels.length - idx - 1]; let _item = item.join("").replace(/(零)\1+/g, "$1"); if (_item === "零") { _item = ""; _level = ""; } else if (_item[_item.length - 1] === "零") { _item = _item.slice(0, _item.length - 1); } return pre + _item + _level; }, ""); if (!(options == null ? void 0 : options.decimal)) { return (options == null ? void 0 : options.money) ? `${_integer}元整` : _integer; } const _decimal = decimal.map((item, idx) => { const unit = confs.decimal.unit; const _unit = item !== "0" ? unit[unit.length - idx - 1] : ""; return `${conf.num[item]}${_unit}`; }).join(""); return (options == null ? void 0 : options.money) ? `${_integer}元` + (_decimal || "整") : `${_integer}${_decimal ? `点${_decimal}` : ""}`; }; // Annotate the CommonJS export names for ESM import in node: 0 && (module.exports = { isNumberBetween, numberToChinese });