diff --git a/dist/package-shared/utils/numberfy.js b/dist/package-shared/utils/numberfy.js index 14d3395..6141e80 100644 --- a/dist/package-shared/utils/numberfy.js +++ b/dist/package-shared/utils/numberfy.js @@ -11,18 +11,40 @@ exports.default = numberfy; * numberfy("123.456", 3) // 123.456 */ function numberfy(num, decimals) { + var _a; try { - const numberfiedNum = Number(num); + const numberString = String(num) + .replace(/[^0-9\.]/g, "") + .replace(/\.$/, ""); + if (!numberString.match(/./)) + return 0; + const existingDecimals = numberString.match(/\./) + ? (_a = numberString.split(".").pop()) === null || _a === void 0 ? void 0 : _a.length + : undefined; + const numberfiedNum = Number(numberString); if (typeof numberfiedNum !== "number") return 0; if (isNaN(numberfiedNum)) return 0; if (decimals) return Number(numberfiedNum.toFixed(decimals)); + if (existingDecimals) + return Number(numberfiedNum.toFixed(existingDecimals)); return Math.round(numberfiedNum); } - catch ( /** @type {any} */error) { + catch (error) { console.log(`Numberfy ERROR: ${error.message}`); return 0; } } +// OLD FUNCTION +// try { +// const numberfiedNum = Number(num); +// if (typeof numberfiedNum !== "number") return 0; +// if (isNaN(numberfiedNum)) return 0; +// if (decimals) return Number(numberfiedNum.toFixed(decimals)); +// return Math.round(numberfiedNum); +// } catch (/** @type {any} */ error: any) { +// console.log(`Numberfy ERROR: ${error.message}`); +// return 0; +// } diff --git a/package-shared/utils/numberfy.ts b/package-shared/utils/numberfy.ts index 2f25327..514143f 100644 --- a/package-shared/utils/numberfy.ts +++ b/package-shared/utils/numberfy.ts @@ -9,13 +9,40 @@ */ export default function numberfy(num: any, decimals?: number): number { try { - const numberfiedNum = Number(num); + const numberString = String(num) + .replace(/[^0-9\.]/g, "") + .replace(/\.$/, ""); + + if (!numberString.match(/./)) return 0; + + const existingDecimals = numberString.match(/\./) + ? numberString.split(".").pop()?.length + : undefined; + + const numberfiedNum = Number(numberString); + if (typeof numberfiedNum !== "number") return 0; if (isNaN(numberfiedNum)) return 0; + if (decimals) return Number(numberfiedNum.toFixed(decimals)); + if (existingDecimals) + return Number(numberfiedNum.toFixed(existingDecimals)); return Math.round(numberfiedNum); - } catch (/** @type {any} */ error: any) { + } catch (error: any) { console.log(`Numberfy ERROR: ${error.message}`); return 0; } } + +// OLD FUNCTION + +// try { +// const numberfiedNum = Number(num); +// if (typeof numberfiedNum !== "number") return 0; +// if (isNaN(numberfiedNum)) return 0; +// if (decimals) return Number(numberfiedNum.toFixed(decimals)); +// return Math.round(numberfiedNum); +// } catch (/** @type {any} */ error: any) { +// console.log(`Numberfy ERROR: ${error.message}`); +// return 0; +// } diff --git a/package.json b/package.json index a61e0d3..fa9b16d 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@moduletrace/datasquirel", - "version": "4.6.0", + "version": "4.6.1", "description": "Cloud-based SQL data management tool", "main": "dist/index.js", "bin": {