| Leo Repp | 58b9f11 | 2021-11-22 11:57:47 +0100 | [diff] [blame^] | 1 | var baseRange = require('./_baseRange'), |
| 2 | isIterateeCall = require('./_isIterateeCall'), |
| 3 | toFinite = require('./toFinite'); |
| 4 | |
| 5 | /** |
| 6 | * Creates a `_.range` or `_.rangeRight` function. |
| 7 | * |
| 8 | * @private |
| 9 | * @param {boolean} [fromRight] Specify iterating from right to left. |
| 10 | * @returns {Function} Returns the new range function. |
| 11 | */ |
| 12 | function createRange(fromRight) { |
| 13 | return function(start, end, step) { |
| 14 | if (step && typeof step != 'number' && isIterateeCall(start, end, step)) { |
| 15 | end = step = undefined; |
| 16 | } |
| 17 | // Ensure the sign of `-0` is preserved. |
| 18 | start = toFinite(start); |
| 19 | if (end === undefined) { |
| 20 | end = start; |
| 21 | start = 0; |
| 22 | } else { |
| 23 | end = toFinite(end); |
| 24 | } |
| 25 | step = step === undefined ? (start < end ? 1 : -1) : toFinite(step); |
| 26 | return baseRange(start, end, step, fromRight); |
| 27 | }; |
| 28 | } |
| 29 | |
| 30 | module.exports = createRange; |