| 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;
 |