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.
		
		
		
		
		
			
	
	
		
			
				
					
						
							|  |  |  |  | // Some functions take a variable number of arguments, or a few expected
 | 
					
						
							|  |  |  |  | // arguments at the beginning and then a variable number of values to operate
 | 
					
						
							|  |  |  |  | // on. This helper accumulates all remaining arguments past the function’s
 | 
					
						
							|  |  |  |  | // argument length (or an explicit `startIndex`), into an array that becomes
 | 
					
						
							|  |  |  |  | // the last argument. Similar to ES6’s "rest parameter".
 | 
					
						
							|  |  |  |  | function restArguments(func, startIndex) { | 
					
						
							|  |  |  |  |   startIndex = startIndex == null ? func.length - 1 : +startIndex; | 
					
						
							|  |  |  |  |   return function() { | 
					
						
							|  |  |  |  |     var length = Math.max(arguments.length - startIndex, 0), | 
					
						
							|  |  |  |  |         rest = Array(length), | 
					
						
							|  |  |  |  |         index = 0; | 
					
						
							|  |  |  |  |     for (; index < length; index++) { | 
					
						
							|  |  |  |  |       rest[index] = arguments[index + startIndex]; | 
					
						
							|  |  |  |  |     } | 
					
						
							|  |  |  |  |     switch (startIndex) { | 
					
						
							|  |  |  |  |       case 0: return func.call(this, rest); | 
					
						
							|  |  |  |  |       case 1: return func.call(this, arguments[0], rest); | 
					
						
							|  |  |  |  |       case 2: return func.call(this, arguments[0], arguments[1], rest); | 
					
						
							|  |  |  |  |     } | 
					
						
							|  |  |  |  |     var args = Array(startIndex + 1); | 
					
						
							|  |  |  |  |     for (index = 0; index < startIndex; index++) { | 
					
						
							|  |  |  |  |       args[index] = arguments[index]; | 
					
						
							|  |  |  |  |     } | 
					
						
							|  |  |  |  |     args[startIndex] = rest; | 
					
						
							|  |  |  |  |     return func.apply(this, args); | 
					
						
							|  |  |  |  |   }; | 
					
						
							|  |  |  |  | } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | module.exports = restArguments; |