UNPKG

ferngully-aurelia-tools

Version:

Ferngully Tools for Aurelia

70 lines 3.12 kB
import * as numeral from "numeral"; var NumberService = (function () { function NumberService() { } NumberService.prototype.toString = function (value, format) { if (typeof (value) === 'string') { return value; } if (Number.isNaN(value)) { return null; } return numeral(value).format(format); }; NumberService.prototype.fromString = function (value, decimalPlaces) { if (decimalPlaces === void 0) { decimalPlaces = 1000; } if (!this.stringIsNumber(value, decimalPlaces)) { return value; } return numeral(value).value(); }; NumberService.prototype.stringIsNumber = function (value, decimalPlaces) { if (decimalPlaces === void 0) { decimalPlaces = 1000; } if (typeof value === "number") return true; if ((value === null) || (value === undefined)) return false; value = value.trim(); var regex = new RegExp(this.getNumberRegexString(decimalPlaces)); return regex.test(value); }; NumberService.prototype.getNumberRegexString = function (decimalPlaces) { if (decimalPlaces === void 0) { decimalPlaces = 0; } return (decimalPlaces !== 0) ? "^[+|-]?(((\\d{1,3}\\,)((\\d{3}\\,)?)(\\d{3}(\\.\\d{0," + decimalPlaces + "})?))|(\\d{1,})|(\\d{0,}(\\.\\d{0," + decimalPlaces + "})))$" : "^[+|-]?(((\\d{1,3}\\,)((\\d{3}\\,)?)(\\d{3}))|(\\d{1,}))$"; }; NumberService.prototype.round = function (value, decimals, type) { return type === RoundingType.Bankers ? this.roundBankers(value, decimals) : this.roundHalfUp(value, decimals); }; NumberService.prototype.roundForSalesTax = function (value) { return this.roundHalfUp(value, 2); }; NumberService.prototype.roundHalfUp = function (value, decimals) { return ((value !== null) && (value !== undefined)) ? this._halfUpRound(value, decimals) : value; }; NumberService.prototype.roundBankers = function (value, decimals) { return ((value !== null) && (value !== undefined)) ? this._bankersRound(value, decimals) : value; }; NumberService.prototype._bankersRound = function (num, decimals) { var d = decimals || 0; var m = Math.pow(10, d); var n = +(d ? num * m : num).toFixed(8); var i = Math.floor(n), f = n - i; var e = 1e-8; var r = (f > 0.5 - e && f < 0.5 + e) ? ((i % 2 === 0) ? i : i + 1) : Math.round(n); return d ? r / m : r; }; NumberService.prototype._halfUpRound = function (num, decimals) { var pow = Math.pow(10, (decimals) ? Math.abs(decimals) : 0); return Math.round(num * pow) / pow; }; return NumberService; }()); export { NumberService }; export var RoundingType; (function (RoundingType) { RoundingType[RoundingType["Bankers"] = 1] = "Bankers"; RoundingType[RoundingType["HalfUp"] = 2] = "HalfUp"; })(RoundingType || (RoundingType = {})); //# sourceMappingURL=number-service.js.map