UNPKG

@n3okill/utils

Version:
70 lines 1.93 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.rangeString = rangeString; exports.rangeNumber = rangeNumber; const toNumeric_1 = require("../number/toNumeric"); const isNumeric_1 = require("../type/isNumeric"); /** * * @param {string} start * @param {string} end * @param {number} step * @returns {Array<string>} * @internal */ /*eslint complexity: ["error", 15]*/ function rangeString(start, end, step = 1) { const result = []; const s = (0, toNumeric_1.toNumeric)(start); const e = (0, toNumeric_1.toNumeric)(end); const isNumericAux = (0, isNumeric_1.isNumeric)(start); const max = Math.max(start.length, end.length); const reg = /^-?0\d/; const pad = reg.test(start) || reg.test(end); const isReverse = e < s; if (isReverse) { step *= -1; } for (let i = s; isReverse ? i >= e : i <= e; i += step) { let val; if (isNumericAux) { val = String(i); if (pad) { const need = max - val.length; if (need > 0) { const z = new Array(need + 1).join("0"); if (i < 0) { val = `-${z}${val.slice(1)}`; } else { val = z + val; } } } } else { val = String.fromCharCode(i); } result.push(val); } return result; } /** * @param {number} start * @param {number} end * @param {number} step * @returns {Array<number>} * @internal */ function rangeNumber(start, end, step = 1) { const result = []; const isReverse = end < start; if (isReverse) { step *= -1; } for (let i = start; isReverse ? i >= end : i <= end; i += step) { result.push(i); } return result; } //# sourceMappingURL=_internal.js.map