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. | ||||
|      */ | ||||
|     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. | ||||
|  | ||||
| @ -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(', '); | ||||
| } | ||||
		Reference in New Issue
	
	Block a user