@n3okill/utils
Version:
Many javascript helpers
70 lines • 1.93 kB
JavaScript
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
;