_createRange.js (864B)
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;