index.transform.js (1678B)
1 "use strict"; 2 3 Object.defineProperty(exports, "__esModule", { 4 value: true 5 }); 6 exports.createIndexTransform = void 0; 7 8 var _is = require("../../utils/is.js"); 9 10 var _factory = require("../../utils/factory.js"); 11 12 var name = 'index'; 13 var dependencies = ['Index']; 14 var createIndexTransform = /* #__PURE__ */(0, _factory.factory)(name, dependencies, function (_ref) { 15 var Index = _ref.Index; 16 17 /** 18 * Attach a transform function to math.index 19 * Adds a property transform containing the transform function. 20 * 21 * This transform creates a one-based index instead of a zero-based index 22 */ 23 return function indexTransform() { 24 var args = []; 25 26 for (var i = 0, ii = arguments.length; i < ii; i++) { 27 var arg = arguments[i]; // change from one-based to zero based, and convert BigNumber to number 28 29 if ((0, _is.isRange)(arg)) { 30 arg.start--; 31 arg.end -= arg.step > 0 ? 0 : 2; 32 } else if (arg && arg.isSet === true) { 33 arg = arg.map(function (v) { 34 return v - 1; 35 }); 36 } else if ((0, _is.isArray)(arg) || (0, _is.isMatrix)(arg)) { 37 arg = arg.map(function (v) { 38 return v - 1; 39 }); 40 } else if ((0, _is.isNumber)(arg)) { 41 arg--; 42 } else if ((0, _is.isBigNumber)(arg)) { 43 arg = arg.toNumber() - 1; 44 } else if (typeof arg === 'string') {// leave as is 45 } else { 46 throw new TypeError('Dimension must be an Array, Matrix, number, string, or Range'); 47 } 48 49 args[i] = arg; 50 } 51 52 var res = new Index(); 53 Index.apply(res, args); 54 return res; 55 }; 56 }, { 57 isTransformFunction: true 58 }); 59 exports.createIndexTransform = createIndexTransform;