@easyscrape/core
Version:
EasyScrape is a NodeJS module designed to be integrated into your web scraping project. With it, you can more easily get information from the web from a JSON object to organized data, as a REST API could give you!
62 lines • 2.41 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
class ESQueriesManagerUtils {
static readGetParam(ArraySize, param) {
let indexList = [];
const parameter = param.replace(/\s|\r|\n/g, '');
const queriesList = parameter.split(',');
for (let i = 0; i < queriesList.length; i++) {
indexList.concat(this.getIndexesFrom(ArraySize, queriesList[i]));
}
indexList = indexList.filter((value, index) => indexList.indexOf(value) === index);
return indexList;
}
static getIndexesFrom(ArraySize, query) {
const indexes = [];
const parsedQuery = /(-?[0-9]+)(?:-|to|=>|->)(-?[0-9]+)/.exec(query);
if (parsedQuery) {
let range = [
Number.parseInt(parsedQuery[1], 10),
Number.parseInt(parsedQuery[2], 10)
];
range = range.map((num) => (num < 0 ? ArraySize + num : num));
if (range[1] < range[0]) {
if (range[0] === ArraySize - 1) {
indexes.push(ArraySize - 1);
}
else {
indexes.concat(this.getIndexesFrom(ArraySize, `${range[0]}to${ArraySize - 1}`));
}
if (range[1] === 0) {
indexes.push(0);
}
else {
indexes.concat(this.getIndexesFrom(ArraySize, `0to${range[1]}`));
}
}
else {
for (let i = range[0]; i < range[1]; i++)
indexes.push(i);
}
}
else if (/^[0-9]+$/.test(query)) {
indexes.push(Number.parseInt(query, 10));
}
else if (/^-[0-9]+$/.test(query)) {
indexes.push(ArraySize + Number.parseInt(query, 10));
}
else {
throw new Error('Invalid Query of Indexes Range, Integers List or Integer.');
}
return indexes;
}
static isArrayOf(array, type) {
const validTypes = typeof type === 'string' ? [type] : type;
if (!Array.isArray(array) ||
array.some((value) => validTypes.includes(typeof value)))
return false;
return true;
}
}
exports.default = ESQueriesManagerUtils;
//# sourceMappingURL=ESQueriesManager.util.js.map