From 150511b263d6d7ccfee33ddc7b8a75d92ed15556 Mon Sep 17 00:00:00 2001 From: John-David Dalton Date: Tue, 5 Jan 2016 07:59:28 -0800 Subject: [PATCH] Add `createRange`. --- lodash.js | 59 +++++++++++++++++++++++++------------------------------ 1 file changed, 27 insertions(+), 32 deletions(-) diff --git a/lodash.js b/lodash.js index e89856242..7319ea009 100644 --- a/lodash.js +++ b/lodash.js @@ -4308,6 +4308,31 @@ return wrapper; } + /** + * 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; + } + start = toNumber(start); + start = start === start ? start : 0; + if (end === undefined) { + end = start; + start = 0; + } else { + end = toNumber(end) || 0; + } + step = step === undefined ? (start < end ? 1 : -1) : (toNumber(step) || 0); + return baseRange(start, end, step, fromRight); + }; + } + /** * Creates a function that wraps `func` to continue currying. * @@ -13441,22 +13466,7 @@ * _.range(0); * // => [] */ - function range(start, end, step) { - if (step && typeof step != 'number' && isIterateeCall(start, end, step)) { - end = step = undefined; - } - start = toNumber(start); - start = start === start ? start : 0; - - if (end === undefined) { - end = start; - start = 0; - } else { - end = toNumber(end) || 0; - } - step = step === undefined ? (start < end ? 1 : -1) : (toNumber(step) || 0); - return baseRange(start, end, step); - } + var range = createRange(); /** * This method is like `_.range` except that it populates values in @@ -13492,22 +13502,7 @@ * _.rangeRight(0); * // => [] */ - function rangeRight(start, end, step) { - if (step && typeof step != 'number' && isIterateeCall(start, end, step)) { - end = step = undefined; - } - start = toNumber(start); - start = start === start ? start : 0; - - if (end === undefined) { - end = start; - start = 0; - } else { - end = toNumber(end) || 0; - } - step = step === undefined ? (start < end ? 1 : -1) : (toNumber(step) || 0); - return baseRange(start, end, step, true); - } + var rangeRight = createRange(true); /** * Invokes the iteratee function `n` times, returning an array of the results