31 lines
		
	
	
		
			864 B
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
		
		
			
		
	
	
			31 lines
		
	
	
		
			864 B
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
|  | var baseRange = require('./_baseRange'), | ||
|  |     isIterateeCall = require('./_isIterateeCall'), | ||
|  |     toFinite = require('./toFinite'); | ||
|  | 
 | ||
|  | /** | ||
|  |  * Creates a `_.range` or `_.rangeRight` function. | ||
|  |  * | ||
|  |  * @private | ||
|  |  * @param {boolean} [fromRight] Specify iterating from right to left. | ||
|  |  * @returns {Function} Returns the new range function. | ||
|  |  */ | ||
|  | function createRange(fromRight) { | ||
|  |   return function(start, end, step) { | ||
|  |     if (step && typeof step != 'number' && isIterateeCall(start, end, step)) { | ||
|  |       end = step = undefined; | ||
|  |     } | ||
|  |     // Ensure the sign of `-0` is preserved.
 | ||
|  |     start = toFinite(start); | ||
|  |     if (end === undefined) { | ||
|  |       end = start; | ||
|  |       start = 0; | ||
|  |     } else { | ||
|  |       end = toFinite(end); | ||
|  |     } | ||
|  |     step = step === undefined ? (start < end ? 1 : -1) : toFinite(step); | ||
|  |     return baseRange(start, end, step, fromRight); | ||
|  |   }; | ||
|  | } | ||
|  | 
 | ||
|  | module.exports = createRange; |