72 lines
		
	
	
		
			2.5 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			72 lines
		
	
	
		
			2.5 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| const signitures = `
 | |
| ## Usage
 | |
| // single task
 | |
| $(...args);
 | |
| // managed task chains
 | |
| e = new Extractor();
 | |
| e.task(...args).task(...args).start();
 | |
| 
 | |
| ## Task Call Signitures:
 | |
| function(itemsSelector:string, fieldSelectors:string[]);
 | |
| function(itemsSelector:string, fieldSelectors:string[], url:string, from:number, to:number, interval:number);
 | |
| function(itemsSelector:string, fieldSelectors:string[], url:string, pages:number[]);
 | |
| function(itemsSelector:string, fieldSelectors:string[], urls:string[]);
 | |
| 
 | |
| ## Example:
 | |
| // extract all links text & url under '.item' elements
 | |
| // use 'selector@attr' to get attribute of the field elements
 | |
| $(".item", ["a", "a@href"]);
 | |
| 
 | |
| ## See Detailed Help:
 | |
| https://git.jebbs.co/jebbs/data-extracter-extesion
 | |
| `.trim();
 | |
| 
 | |
| function testArgs(...args) {
 | |
|     switch (args.length) {
 | |
|         case 0, 1:
 | |
|             return false;
 | |
|         case 2:
 | |
|             return args[0] && args[1] &&
 | |
|                 (typeof args[0] == "string") &&
 | |
|                 (args[1] instanceof Array) &&
 | |
|                 testArrayVals(args[1], v => typeof v == "string");
 | |
|         case 3:
 | |
|             return args[0] && args[1] &&
 | |
|                 typeof args[0] == "string" &&
 | |
|                 args[1] instanceof Array &&
 | |
|                 testArrayVals(args[1], v => typeof v == "string") &&
 | |
|                 (
 | |
|                     (
 | |
|                         args[2] instanceof Array &&
 | |
|                         testArrayVals(args[2], v => typeof v == "string")
 | |
|                     ) || (
 | |
|                         args[2] instanceof ExtractResult
 | |
|                     )
 | |
|                 );
 | |
|         case 4:
 | |
|             return args[0] && args[1] &&
 | |
|                 typeof args[0] == "string" &&
 | |
|                 args[1] instanceof Array &&
 | |
|                 testArrayVals(args[1], v => typeof v == "string") &&
 | |
|                 typeof args[2] == "string" &&
 | |
|                 args[3] instanceof Array &&
 | |
|                 testArrayVals(args[3], v => typeof v == "number");
 | |
|         case 6:
 | |
|             return args[0] && args[1] &&
 | |
|                 typeof args[0] == "string" &&
 | |
|                 args[1] instanceof Array &&
 | |
|                 testArrayVals(args[1], v => typeof v == "string") &&
 | |
|                 typeof args[2] == "string" &&
 | |
|                 !isNaN(args[3]) && !isNaN(args[4]) && !isNaN(args[5]);
 | |
|         default:
 | |
|             return false;
 | |
|     }
 | |
| 
 | |
|     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(', ');
 | |
| } |