UNPKG

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
"use strict"; 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;