the-math
Version:
TheMath is an extensive math library for JavaScript and Node.js. It features a flexible expression parser
62 lines (61 loc) • 2.99 kB
JavaScript
;
var __assign = (this && this.__assign) || function () {
__assign = Object.assign || function(t) {
for (var s, i = 1, n = arguments.length; i < n; i++) {
s = arguments[i];
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
t[p] = s[p];
}
return t;
};
return __assign.apply(this, arguments);
};
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
var divide_1 = __importDefault(require("../operations/divide"));
var multiply_1 = __importDefault(require("../operations/multiply"));
var subtract_1 = __importDefault(require("../operations/subtract"));
var sum_1 = __importDefault(require("../operations/sum"));
var round_1 = __importDefault(require("../utils/round"));
function createChain(globalInitOptions) {
var globalOptions = __assign({}, globalInitOptions);
if (typeof (globalInitOptions === null || globalInitOptions === void 0 ? void 0 : globalInitOptions.round) === 'boolean') {
globalOptions.round = { type: 'round' };
}
return function chain(startNumber) {
return {
divide: function (divisor) {
return chain((0, divide_1.default)(startNumber, divisor));
},
multiply: function (multiplier) {
return chain((0, multiply_1.default)(startNumber, multiplier));
},
subtract: function (subtractor) {
return chain((0, subtract_1.default)(startNumber, subtractor));
},
add: function (adder) {
return chain((0, sum_1.default)(startNumber, adder));
},
done: function (options) {
var _a, _b, _c, _d;
var operation = {
number: startNumber
};
if (globalOptions.round || (options === null || options === void 0 ? void 0 : options.round)) {
var roundOptions = {};
if (typeof (options === null || options === void 0 ? void 0 : options.round) !== 'boolean') {
roundOptions = {
roundType: ((_a = options === null || options === void 0 ? void 0 : options.round) === null || _a === void 0 ? void 0 : _a.type) || ((_b = globalOptions.round) === null || _b === void 0 ? void 0 : _b.type),
precision: ((_c = options === null || options === void 0 ? void 0 : options.round) === null || _c === void 0 ? void 0 : _c.precision) || ((_d = globalOptions.round) === null || _d === void 0 ? void 0 : _d.precision)
};
}
(0, round_1.default)(operation, roundOptions);
}
return operation.number;
}
};
};
}
exports.default = createChain;