improve invalid arguments processing
This commit is contained in:
@ -11,8 +11,11 @@ class Extractor {
|
|||||||
* @param {...any} args itemsSelector, fieldSelectors, and more args to specify target urls.
|
* @param {...any} args itemsSelector, fieldSelectors, and more args to specify target urls.
|
||||||
*/
|
*/
|
||||||
task(...args) {
|
task(...args) {
|
||||||
if (!testArgs(...args))
|
if (!testArgs(...args)) {
|
||||||
throw new Error(`Invalid call arguments.\n\n${signitures}\n\n`);
|
console.log(`Invalid call arguments.\n\n${argsToString(...args)}\n${signitures}\n`);
|
||||||
|
// break call chain to avoid unexpected task running
|
||||||
|
return undefined;
|
||||||
|
}
|
||||||
// given >2 arguments means the task specifies target page,
|
// given >2 arguments means the task specifies target page,
|
||||||
// so it won't accept last task result as url list.
|
// so it won't accept last task result as url list.
|
||||||
// in this case, former tasks are useless, can be cleared.
|
// in this case, former tasks are useless, can be cleared.
|
||||||
|
|||||||
@ -1,7 +1,4 @@
|
|||||||
const signitures = `
|
const signitures = `
|
||||||
# DataExtracter Help
|
|
||||||
----------------------------
|
|
||||||
|
|
||||||
## Usage
|
## Usage
|
||||||
new Extractor().task(...args).task(...args).start();
|
new Extractor().task(...args).task(...args).start();
|
||||||
|
|
||||||
@ -14,7 +11,7 @@ task(itemsSelector:string, fieldSelectors:string, url:string, pages:number[])
|
|||||||
task(itemsSelector:string, fieldSelectors:string[], urls:string[])
|
task(itemsSelector:string, fieldSelectors:string[], urls:string[])
|
||||||
task(itemsSelector:string, fieldSelectors:string[], urls:ExtractResult)
|
task(itemsSelector:string, fieldSelectors:string[], urls:ExtractResult)
|
||||||
|
|
||||||
See detail help in:
|
## See Detailed Help:
|
||||||
https://git.jebbs.co/jebbs/data-extracter-extesion
|
https://git.jebbs.co/jebbs/data-extracter-extesion
|
||||||
`.trim();
|
`.trim();
|
||||||
|
|
||||||
@ -95,4 +92,8 @@ function testArgs(...args) {
|
|||||||
function testArrayVals(arr, tester) {
|
function testArrayVals(arr, tester) {
|
||||||
return arr.reduce((p, c) => p && tester(c), true);
|
return arr.reduce((p, c) => p && tester(c), true);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function argsToString(...args) {
|
||||||
|
return args.map(v => (v instanceof Array ? `[${v.join(', ')}]` : v.toString())).join(', ');
|
||||||
}
|
}
|
||||||
Reference in New Issue
Block a user