chinese-numbering
Version:
format numbers as chinese words
3 lines (2 loc) • 2.51 kB
JavaScript
var ChineseNumbering=function(e){"use strict";const n=Object.freeze({chineseType:"simplified",keepOne:!1});function i(e){switch(e){case"s":return"simplified";case"t":return"traditional";default:return e}}function t(e){return"boolean"==typeof e?{chineseType:e?"traditional":"simplified",keepOne:n.keepOne}:"string"==typeof e?{chineseType:i(e),keepOne:n.keepOne}:"object"==typeof e&&null!==e?{chineseType:"string"==typeof e.chineseType?i(e.chineseType):n.chineseType,keepOne:void 0===e.keepOne?n.keepOne:!!e.keepOne}:n}var r=Object.freeze({__proto__:null,simplified:{digits:["零","一","二","三","四","五","六","七","八","九"],units:["","十","百","千","万","十","百","千","亿","十","百","千","兆","十","百","千","京","十","百","千","垓"],ordinal:"第",point:"点",minus:"负"},traditional:{digits:["零","一","二","三","四","五","六","七","八","九"],units:["","十","百","千","萬","十","百","千","億","十","百","千","兆","十","百","千","京","十","百","千","垓"],ordinal:"第",point:"點",minus:"負"}});function o(e){return r[e.chineseType]}const s=new WeakMap;function p(e){const n=s.get(e);if(n)return n;const{digits:i,units:t}=e,r=t[1]+t[2]+t[3],o=t[4]+t[8]+t[12]+t[16]+t[20],p=i[0],c={onlyZero:[new RegExp(`(${p})[${r}]`,"g"),"$1"],zeroBetweenBigUnits:[new RegExp(`([${o}])[^${r}]+([${o}])`,"g"),"$1"+p],zeroBetweenSmallAndBigUnits:[new RegExp(`([${r}])${p}+([${o}])`,"g"),"$1$2"+p],groupZero:[new RegExp(`(${i[0]})+`,"g"),"$1"],removeTailZero:[new RegExp(p+"+$"),""],removeOne:[new RegExp(`^${i[1]}${t[1]}`),t[1]]};return s.set(e,c),c}function c(e,n){const i=t(n),r=o(i);return function(e,n,i){const{digits:t,units:r,minus:o}=n,s=p(n);let c=Math.floor(Math.abs(e));if(c<1)return(e<0?o:"")+t[0];let l="",u=0;for(;c>0;)l=t[c%10]+r[u]+l,c=Math.floor(c/10),u++;return l=l.replace(...s.onlyZero).replace(...s.zeroBetweenBigUnits).replace(...s.zeroBetweenSmallAndBigUnits).replace(...s.groupZero).replace(...s.removeTailZero),1!=i&&(l=l.replace(...s.removeOne)),(e<0?o:"")+l}(e,r,i.keepOne)+function(e,n){if(e%1==0)return"";e=Math.abs(e);const{digits:i,point:t}=n;let r=e.toString();r=r.slice(r.indexOf(".")+1);let o="";for(const e of r)o+=i[parseInt(e)];return t+o}(e,r)}return e.normalizeChineseType=i,e.normalizeOptions=t,e.numberToChinese=c,e.numberToChineseOrdinal=function(e,n){const i=t(n);return o(i).ordinal+c(e,i)},e.numberToChineseOrdinalWithArabic=function(e,n){return o(t(n)).ordinal+e.toString(10)},e}({});
//# sourceMappingURL=iife.min.js.map