diff --git a/README.md b/README.md index 18094786b..04922e847 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -# lodash v3.0.0 +# lodash v3.0.1 The [modern build](https://github.com/lodash/lodash/wiki/Build-Differences) of [lodash](https://lodash.com/) exported as [AMD](https://github.com/amdjs/amdjs-api/wiki/AMD) modules. diff --git a/chain/wrapperReverse.js b/chain/wrapperReverse.js index de66c15b4..6a1a4a9f4 100644 --- a/chain/wrapperReverse.js +++ b/chain/wrapperReverse.js @@ -23,6 +23,9 @@ define(['../internal/LazyWrapper', '../internal/LodashWrapper', './thru'], funct function wrapperReverse() { var value = this.__wrapped__; if (value instanceof LazyWrapper) { + if (this.__actions__.length) { + value = new LazyWrapper(this); + } return new LodashWrapper(value.reverse()); } return this.thru(function(value) { diff --git a/collection/forEach.js b/collection/forEach.js index 7dba29db0..42b034ef8 100644 --- a/collection/forEach.js +++ b/collection/forEach.js @@ -20,7 +20,7 @@ define(['../internal/arrayEach', '../internal/baseEach', '../internal/bindCallba * @returns {Array|Object|string} Returns `collection`. * @example * - * _([1, 2, 3]).forEach(function(n) { console.log(n); }); + * _([1, 2, 3]).forEach(function(n) { console.log(n); }).value(); * // => logs each value from left to right and returns the array * * _.forEach({ 'one': 1, 'two': 2, 'three': 3 }, function(n, key) { console.log(n, key); }); diff --git a/function/memoize.js b/function/memoize.js index ce1f5345c..782ab7503 100644 --- a/function/memoize.js +++ b/function/memoize.js @@ -34,7 +34,7 @@ define(['../internal/MapCache', '../lang/isFunction'], function(MapCache, isFunc * // => 'FRED' * * // modifying the result cache - * upperCase.cache.set('fred, 'BARNEY'); + * upperCase.cache.set('fred', 'BARNEY'); * upperCase('fred'); * // => 'BARNEY' * diff --git a/internal/baseCallback.js b/internal/baseCallback.js index a5f832fa6..de8dace0c 100644 --- a/internal/baseCallback.js +++ b/internal/baseCallback.js @@ -1,4 +1,4 @@ -define(['./baseMatches', './baseProperty', './baseToString', './bindCallback', '../utility/identity', './isBindable'], function(baseMatches, baseProperty, baseToString, bindCallback, identity, isBindable) { +define(['./baseMatches', './baseProperty', './bindCallback', '../utility/identity', './isBindable'], function(baseMatches, baseProperty, bindCallback, identity, isBindable) { /** * The base implementation of `_.callback` which supports specifying the @@ -23,7 +23,7 @@ define(['./baseMatches', './baseProperty', './baseToString', './bindCallback', ' // Handle "_.property" and "_.matches" style callback shorthands. return type == 'object' ? baseMatches(func, !argCount) - : baseProperty(argCount ? baseToString(func) : func); + : baseProperty(func + ''); } return baseCallback; diff --git a/internal/baseMergeDeep.js b/internal/baseMergeDeep.js index 33a098b6a..163d8b490 100644 --- a/internal/baseMergeDeep.js +++ b/internal/baseMergeDeep.js @@ -44,6 +44,9 @@ define(['./arrayCopy', '../lang/isArguments', '../lang/isArray', './isLength', ' ? toPlainObject(value) : (isPlainObject(value) ? value : {}); } + else { + isCommon = false; + } } // Add the source value to the stack of traversed objects and associate // it with its merged value. diff --git a/internal/baseSlice.js b/internal/baseSlice.js index 905badf8a..803ea40bc 100644 --- a/internal/baseSlice.js +++ b/internal/baseSlice.js @@ -21,7 +21,8 @@ define([], function() { if (end < 0) { end += length; } - length = start > end ? 0 : (end - start); + length = start > end ? 0 : (end - start) >>> 0; + start >>>= 0; var result = Array(length); while (++index < length) { diff --git a/internal/createPad.js b/internal/createPad.js index d05309724..59299def4 100644 --- a/internal/createPad.js +++ b/internal/createPad.js @@ -1,4 +1,4 @@ -define(['./baseToString', '../string/repeat', './root'], function(baseToString, repeat, root) { +define(['../string/repeat', './root'], function(repeat, root) { /** Native method references. */ var ceil = Math.ceil; @@ -25,7 +25,7 @@ define(['./baseToString', '../string/repeat', './root'], function(baseToString, return ''; } var padLength = length - strLength; - chars = chars == null ? ' ' : baseToString(chars); + chars = chars == null ? ' ' : (chars + ''); return repeat(chars, ceil(padLength / chars.length)).slice(0, padLength); } diff --git a/internal/equalByTag.js b/internal/equalByTag.js index 2f9daa9f8..d6519e2df 100644 --- a/internal/equalByTag.js +++ b/internal/equalByTag.js @@ -1,4 +1,4 @@ -define(['./baseToString'], function(baseToString) { +define([], function() { /** `Object#toString` result references. */ var boolTag = '[object Boolean]', @@ -43,7 +43,7 @@ define(['./baseToString'], function(baseToString) { case stringTag: // Coerce regexes to strings and treat strings primitives and string // objects as equal. See https://es5.github.io/#x15.10.6.4 for more details. - return object == baseToString(other); + return object == (other + ''); } return false; } diff --git a/internal/lazyReverse.js b/internal/lazyReverse.js index f3be69017..9f0128ec8 100644 --- a/internal/lazyReverse.js +++ b/internal/lazyReverse.js @@ -9,11 +9,14 @@ define(['./LazyWrapper'], function(LazyWrapper) { * @returns {Object} Returns the new reversed `LazyWrapper` object. */ function lazyReverse() { - var filtered = this.filtered, - result = filtered ? new LazyWrapper(this) : this.clone(); - - result.dir = this.dir * -1; - result.filtered = filtered; + if (this.filtered) { + var result = new LazyWrapper(this); + result.dir = -1; + result.filtered = true; + } else { + result = this.clone(); + result.dir *= -1; + } return result; } diff --git a/internal/lazyValue.js b/internal/lazyValue.js index 08d6558be..e20c475e8 100644 --- a/internal/lazyValue.js +++ b/internal/lazyValue.js @@ -22,12 +22,12 @@ define(['./baseWrapperValue', './getView', '../lang/isArray'], function(baseWrap } var dir = this.dir, isRight = dir < 0, - length = array.length, - view = getView(0, length, this.views), + view = getView(0, array.length, this.views), start = view.start, end = view.end, + length = end - start, dropCount = this.dropCount, - takeCount = nativeMin(end - start, this.takeCount - dropCount), + takeCount = nativeMin(length, this.takeCount - dropCount), index = isRight ? end : start - 1, iteratees = this.iteratees, iterLength = iteratees ? iteratees.length : 0, @@ -63,7 +63,7 @@ define(['./baseWrapperValue', './getView', '../lang/isArray'], function(baseWrap result[resIndex++] = value; } } - return isRight ? result.reverse() : result; + return result; } return lazyValue; diff --git a/main.js b/main.js index 6ffb2bc75..fa8a8d40a 100644 --- a/main.js +++ b/main.js @@ -1,6 +1,6 @@ /** * @license - * lodash 3.0.0 (Custom Build) + * lodash 3.0.1 (Custom Build) * Build: `lodash modern exports="amd" -d -o ./main.js` * Copyright 2012-2015 The Dojo Foundation * Based on Underscore.js 1.7.0 @@ -13,7 +13,7 @@ var undefined; /** Used as the semantic version number. */ - var VERSION = '3.0.0'; + var VERSION = '3.0.1'; /** Used to compose bitmasks for wrapper metadata. */ var BIND_FLAG = 1, @@ -1057,11 +1057,14 @@ * @returns {Object} Returns the new reversed `LazyWrapper` object. */ function lazyReverse() { - var filtered = this.filtered, - result = filtered ? new LazyWrapper(this) : this.clone(); - - result.dir = this.dir * -1; - result.filtered = filtered; + if (this.filtered) { + var result = new LazyWrapper(this); + result.dir = -1; + result.filtered = true; + } else { + result = this.clone(); + result.dir *= -1; + } return result; } @@ -1080,12 +1083,12 @@ } var dir = this.dir, isRight = dir < 0, - length = array.length, - view = getView(0, length, this.views), + view = getView(0, array.length, this.views), start = view.start, end = view.end, + length = end - start, dropCount = this.dropCount, - takeCount = nativeMin(end - start, this.takeCount - dropCount), + takeCount = nativeMin(length, this.takeCount - dropCount), index = isRight ? end : start - 1, iteratees = this.iteratees, iterLength = iteratees ? iteratees.length : 0, @@ -1121,7 +1124,7 @@ result[resIndex++] = value; } } - return isRight ? result.reverse() : result; + return result; } /*------------------------------------------------------------------------*/ @@ -1642,7 +1645,7 @@ // Handle "_.property" and "_.matches" style callback shorthands. return type == 'object' ? baseMatches(func, !argCount) - : baseProperty(argCount ? baseToString(func) : func); + : baseProperty(func + ''); } /** @@ -2372,6 +2375,9 @@ ? toPlainObject(value) : (isPlainObject(value) ? value : {}); } + else { + isCommon = false; + } } // Add the source value to the stack of traversed objects and associate // it with its merged value. @@ -2493,7 +2499,8 @@ if (end < 0) { end += length; } - length = start > end ? 0 : (end - start); + length = start > end ? 0 : (end - start) >>> 0; + start >>>= 0; var result = Array(length); while (++index < length) { @@ -3100,7 +3107,7 @@ return ''; } var padLength = length - strLength; - chars = chars == null ? ' ' : baseToString(chars); + chars = chars == null ? ' ' : (chars + ''); return repeat(chars, ceil(padLength / chars.length)).slice(0, padLength); } @@ -3293,7 +3300,7 @@ case stringTag: // Coerce regexes to strings and treat strings primitives and string // objects as equal. See https://es5.github.io/#x15.10.6.4 for more details. - return object == baseToString(other); + return object == (other + ''); } return false; } @@ -5311,6 +5318,9 @@ function wrapperReverse() { var value = this.__wrapped__; if (value instanceof LazyWrapper) { + if (this.__actions__.length) { + value = new LazyWrapper(this); + } return new LodashWrapper(value.reverse()); } return this.thru(function(value) { @@ -5686,7 +5696,7 @@ * @returns {Array|Object|string} Returns `collection`. * @example * - * _([1, 2, 3]).forEach(function(n) { console.log(n); }); + * _([1, 2, 3]).forEach(function(n) { console.log(n); }).value(); * // => logs each value from left to right and returns the array * * _.forEach({ 'one': 1, 'two': 2, 'three': 3 }, function(n, key) { console.log(n, key); }); @@ -7102,7 +7112,7 @@ * // => 'FRED' * * // modifying the result cache - * upperCase.cache.set('fred, 'BARNEY'); + * upperCase.cache.set('fred', 'BARNEY'); * upperCase('fred'); * // => 'BARNEY' * @@ -9190,7 +9200,7 @@ /** * Converts `string` to kebab case (a.k.a. spinal case). - * See [Wikipedia](https://en.wikipedia.org/wiki/Letter_case#Computers) for + * See [Wikipedia](https://en.wikipedia.org/wiki/Letter_case#Special_case_styles) for * more details. * * @static @@ -10674,7 +10684,8 @@ // Add `LazyWrapper` methods to `lodash.prototype`. baseForOwn(LazyWrapper.prototype, function(func, methodName) { - var retUnwrapped = /^(?:first|last)$/.test(methodName); + var lodashFunc = lodash[methodName], + retUnwrapped = /^(?:first|last)$/.test(methodName); lodash.prototype[methodName] = function() { var value = this.__wrapped__, @@ -10687,12 +10698,12 @@ if (retUnwrapped && !chainAll) { return onlyLazy ? func.call(value) - : lodash[methodName](this.value()); + : lodashFunc.call(lodash, this.value()); } var interceptor = function(value) { var otherArgs = [value]; push.apply(otherArgs, args); - return lodash[methodName].apply(lodash, otherArgs); + return lodashFunc.apply(lodash, otherArgs); }; if (isLazy || isArray(value)) { var wrapper = onlyLazy ? value : new LazyWrapper(this), diff --git a/package.json b/package.json index 9a350df76..5d26c56b0 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "lodash", - "version": "3.0.0", + "version": "3.0.1", "main": "main.js", "private": true, "volo": { diff --git a/string/kebabCase.js b/string/kebabCase.js index b0a0bbbbc..d5f76bfa2 100644 --- a/string/kebabCase.js +++ b/string/kebabCase.js @@ -2,7 +2,7 @@ define(['../internal/createCompounder'], function(createCompounder) { /** * Converts `string` to kebab case (a.k.a. spinal case). - * See [Wikipedia](https://en.wikipedia.org/wiki/Letter_case#Computers) for + * See [Wikipedia](https://en.wikipedia.org/wiki/Letter_case#Special_case_styles) for * more details. * * @static