ferngully-aurelia-tools
Version:
Ferngully Tools for Aurelia
73 lines • 3.57 kB
JavaScript
define(["require", "exports", "numeral"], function (require, exports, numeral) {
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
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;
}());
exports.NumberService = NumberService;
var RoundingType;
(function (RoundingType) {
RoundingType[RoundingType["Bankers"] = 1] = "Bankers";
RoundingType[RoundingType["HalfUp"] = 2] = "HalfUp";
})(RoundingType = exports.RoundingType || (exports.RoundingType = {}));
});
//# sourceMappingURL=number-service.js.map