@resk/core
Version:
An innovative TypeScript framework that empowers developers to build applications with a fully decorator-based architecture for efficient resource management. By combining the power of decorators with a resource-oriented design, DecorRes enhances code cla
1 lines • 3.26 kB
JavaScript
;var c=require('../currency'),x=require('./defaultStr'),isNumber=require('./isNumber');function _interopDefault(e){return e&&e.__esModule?e:{default:e}}var c__default=/*#__PURE__*/_interopDefault(c);var x__default=/*#__PURE__*/_interopDefault(x);var d=Object.getOwnPropertySymbols;var C=Object.prototype.hasOwnProperty,S=Object.prototype.propertyIsEnumerable;var N=(r,t)=>{var n={};for(var e in r)C.call(r,e)&&t.indexOf(e)<0&&(n[e]=r[e]);if(r!=null&&d)for(var e of d(r))t.indexOf(e)<0&&S.call(r,e)&&(n[e]=r[e]);return n};const{currencies:I}=c__default.default;Number.prototype.countDecimals=function(){const r=String(this.toString()).match(/\.(\d+)/);return r?r[1].length:0},Number.prototype.formatNumber=function(r,t,n){return c__default.default.formatNumber(this.valueOf(),r,t,n)},Number.prototype.formatMoney=function(r,t,n,e,i){return c__default.default.formatMoney(this.valueOf(),r,t,n,e,i)};const F=(r,t,n,e)=>{var h;if(r===null||typeof r!="number"||isNaN(r))return {result:"",format:"",suffix:"",formattedValue:"",minAbreviationDecimalDigits:0,value:NaN};if(!isFinite(r)){const f=r>0?"\u221E":"-\u221E";return {result:f,value:r,format:"",suffix:"",formattedValue:f,minAbreviationDecimalDigits:0}}const i=Math.abs(r)<1e3,s=[{value:1e12,suffix:"T"},{value:1e9,suffix:"B"},{value:1e6,suffix:"M"},{value:1e3,suffix:"K"},{value:1,suffix:""}],m=r.countDecimals?r.countDecimals():Math.floor(r)===r?0:((h=r.toString().split(".")[1])==null?void 0:h.length)||0;let a=s.find(f=>Math.abs(r)>=f.value)||s[s.length-1],o=i?r:r/(a.value===1?1:a.value),y=a.suffix;const v=A(o,5);if(r===0){const f="0";return {result:f,value:0,format:"",suffix:"",formattedValue:f,minAbreviationDecimalDigits:0}}const l=isNumber.isNumber(t)&&t>0?t:a.value===1?Math.min(m,5):Math.max(v,0);let b=o.toFixed(l);n=x__default.default(n),e=x__default.default(e,".");const u=b.toString().split(".");return u[0]=u[0].replace(/\B(?=(\d{3})+(?!\d))/g,n),l>0&&u.length===1?u.push("0".repeat(l)):l>0&&u.length>1&&u[1].length<l&&(u[1]=u[1].padEnd(l,"0")),b=u.join(e),{result:b+y,value:r,format:y,suffix:y,formattedValue:b,minAbreviationDecimalDigits:v}};function A(r,t){const n=Math.abs(r);if(Number.isInteger(n))return 0;const e=n.toString().split(".")[1]||"";let i=0;for(;i<e.length&&e[i]==="0";)i++;return n<1&&i>0?Math.min(i+t,e.length):Math.min(t,e.length)}const D=(r,t,n,e)=>F(r,t,n,e).result;Number.prototype.abreviate2FormatNumber=function(r,t,n){return D(this.valueOf(),r,t,n)};const M=(r,t,n,e,i,s)=>{if(!isNumber.isNumber(r))return "";const o=c__default.default.formatMoneyAsObject(r,t,n,e,i,s),{formattedValue:m}=o,a=N(o,["formattedValue"]);return m.replace("%v",D(r,a.decimalDigits,a.thousandSeparator,a.decimalSeparator))};Number.prototype.abreviate2FormatMoney=function(r,t,n,e,i){return M(this.valueOf(),r,t,n,e,i)};function P(...r){for(const t of r)if(isNumber.isNumber(t)&&t!==0)return t;return 0}Object.keys(I).forEach(r=>{const t=r,n=I[t],e=`format${t}`,i=`abreviate2Format${t}`;Number.prototype[e]=function(s,m,a,o){return c__default.default.formatMoney(this.valueOf(),n,s,m,a,o)},Number.prototype[i]=function(s,m,a,o){return M(this.valueOf(),n,s,m,a,o)};});exports._abreviateNumber=F;exports.abreviate2FormatMoney=M;exports.abreviateNumber=D;exports.defaultNumber=P;