improve invalid arguments processing

This commit is contained in:
2018-09-29 13:32:13 +08:00
parent 556316a021
commit ecd8a0d3d8
2 changed files with 10 additions and 6 deletions

View File

@ -11,8 +11,11 @@ class Extractor {
* @param {...any} args itemsSelector, fieldSelectors, and more args to specify target urls.
*/
task(...args) {
if (!testArgs(...args))
throw new Error(`Invalid call arguments.\n\n${signitures}\n\n`);
if (!testArgs(...args)) {
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,
// so it won't accept last task result as url list.
// in this case, former tasks are useless, can be cleared.

View File

@ -1,7 +1,4 @@
const signitures = `
# DataExtracter Help
----------------------------
## Usage
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:ExtractResult)
See detail help in:
## See Detailed Help:
https://git.jebbs.co/jebbs/data-extracter-extesion
`.trim();
@ -95,4 +92,8 @@ function testArgs(...args) {
function testArrayVals(arr, tester) {
return arr.reduce((p, c) => p && tester(c), true);
}
}
function argsToString(...args) {
return args.map(v => (v instanceof Array ? `[${v.join(', ')}]` : v.toString())).join(', ');
}