UNPKG

turbocommons-ts

Version:

General purpose library that implements frequently used and generic software development tasks

1 lines 2.21 kB
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.NumericUtils=void 0;var StringUtils_1=require("./StringUtils"),NumericUtils=function(){function r(){}return r.isNumeric=function(i,t){void 0===t&&(t="");try{r._formatNumericString(i,t)}catch(r){return!1}return!0},r.isInteger=function(i){return!!r.isNumeric(i)&&String(this._formatNumericString(i)).indexOf(".")<0},r.forceNumeric=function(r,i,t){if(void 0===i&&(i=""),void 0===t&&(t="must be numeric"),!this.isNumeric(r))throw new Error(i+" "+t)},r.forcePositiveInteger=function(r,i,t){if(void 0===i&&(i=""),void 0===t&&(t="must be a positive integer"),!this.isInteger(r)||r<=0)throw new Error(i+" "+t)},r.getNumeric=function(i,t){return void 0===t&&(t=""),Number(r._formatNumericString(i,t))},r.generateRandomInteger=function(i,t){if(!r.isInteger(t)||!r.isInteger(i))throw new Error("max and min must be integers");if(t<=i)throw new Error("max must be higher than min");return Math.floor(Math.random()*(t-i+1))+i},r._formatNumericString=function(i,t){if(void 0===t&&(t=""),""!==t&&"."!==t&&","!==t)throw new Error("Invalid decimal divider");if(StringUtils_1.StringUtils.isString(i)){var e=-1,n=(i=i.trim().replace(/\s/g,"")).lastIndexOf(","),o=i.lastIndexOf(".");switch(t){case".":if(StringUtils_1.StringUtils.countStringOccurences(i,".")>1||n>=0&&o>=0&&n>o)throw new Error(r.NON_NUMERIC_ERROR);o>0&&(e=o);break;case",":if(StringUtils_1.StringUtils.countStringOccurences(i,",")>1||n>=0&&o>=0&&o>n)throw new Error(r.NON_NUMERIC_ERROR);n>0&&(e=n);break;default:e=Math.max(n,o)}var s=(i=i.replace(/,/g,".")).split("."),c=s.length;if("."===i.slice(-1)&&StringUtils_1.StringUtils.countStringOccurences(i,".")>1)throw new Error(r.NON_NUMERIC_ERROR);if(c>2){if(s[0].split("-").join("").length>3)throw new Error(r.NON_NUMERIC_ERROR);for(var u=1;u<c-1;u++)if(3!==s[u].length)throw new Error(r.NON_NUMERIC_ERROR)}i=e<0?StringUtils_1.StringUtils.replace(i,".",""):StringUtils_1.StringUtils.replace(i,".","",StringUtils_1.StringUtils.countStringOccurences(i,".")-1)}if(isNaN(parseFloat(i))||!isFinite(i))throw new Error(r.NON_NUMERIC_ERROR);return String(i)},r.NON_NUMERIC_ERROR="value is not numeric",r}();exports.NumericUtils=NumericUtils;