UNPKG

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