You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					26 lines
				
				782 B
			
		
		
			
		
	
	
					26 lines
				
				782 B
			| 
								 
											3 years ago
										 
									 | 
							
								'use strict';
							 | 
						||
| 
								 | 
							
								var path = require('./_path');
							 | 
						||
| 
								 | 
							
								var invoke = require('./_invoke');
							 | 
						||
| 
								 | 
							
								var aFunction = require('./_a-function');
							 | 
						||
| 
								 | 
							
								module.exports = function (/* ...pargs */) {
							 | 
						||
| 
								 | 
							
								  var fn = aFunction(this);
							 | 
						||
| 
								 | 
							
								  var length = arguments.length;
							 | 
						||
| 
								 | 
							
								  var pargs = new Array(length);
							 | 
						||
| 
								 | 
							
								  var i = 0;
							 | 
						||
| 
								 | 
							
								  var _ = path._;
							 | 
						||
| 
								 | 
							
								  var holder = false;
							 | 
						||
| 
								 | 
							
								  while (length > i) if ((pargs[i] = arguments[i++]) === _) holder = true;
							 | 
						||
| 
								 | 
							
								  return function (/* ...args */) {
							 | 
						||
| 
								 | 
							
								    var that = this;
							 | 
						||
| 
								 | 
							
								    var aLen = arguments.length;
							 | 
						||
| 
								 | 
							
								    var j = 0;
							 | 
						||
| 
								 | 
							
								    var k = 0;
							 | 
						||
| 
								 | 
							
								    var args;
							 | 
						||
| 
								 | 
							
								    if (!holder && !aLen) return invoke(fn, pargs, that);
							 | 
						||
| 
								 | 
							
								    args = pargs.slice();
							 | 
						||
| 
								 | 
							
								    if (holder) for (;length > j; j++) if (args[j] === _) args[j] = arguments[k++];
							 | 
						||
| 
								 | 
							
								    while (aLen > k) args.push(arguments[k++]);
							 | 
						||
| 
								 | 
							
								    return invoke(fn, args, that);
							 | 
						||
| 
								 | 
							
								  };
							 | 
						||
| 
								 | 
							
								};
							 |