summaryrefslogtreecommitdiff
path: root/tools/eslint/node_modules/lodash/transform.js
diff options
context:
space:
mode:
Diffstat (limited to 'tools/eslint/node_modules/lodash/transform.js')
-rw-r--r--tools/eslint/node_modules/lodash/transform.js24
1 files changed, 13 insertions, 11 deletions
diff --git a/tools/eslint/node_modules/lodash/transform.js b/tools/eslint/node_modules/lodash/transform.js
index f438ed8fed..d755a15489 100644
--- a/tools/eslint/node_modules/lodash/transform.js
+++ b/tools/eslint/node_modules/lodash/transform.js
@@ -4,6 +4,7 @@ var arrayEach = require('./_arrayEach'),
baseIteratee = require('./_baseIteratee'),
getPrototype = require('./_getPrototype'),
isArray = require('./isArray'),
+ isBuffer = require('./isBuffer'),
isFunction = require('./isFunction'),
isObject = require('./isObject'),
isTypedArray = require('./isTypedArray');
@@ -39,22 +40,23 @@ var arrayEach = require('./_arrayEach'),
* // => { '1': ['a', 'c'], '2': ['b'] }
*/
function transform(object, iteratee, accumulator) {
- var isArr = isArray(object) || isTypedArray(object);
- iteratee = baseIteratee(iteratee, 4);
+ var isArr = isArray(object),
+ isArrLike = isArr || isBuffer(object) || isTypedArray(object);
+ iteratee = baseIteratee(iteratee, 4);
if (accumulator == null) {
- if (isArr || isObject(object)) {
- var Ctor = object.constructor;
- if (isArr) {
- accumulator = isArray(object) ? new Ctor : [];
- } else {
- accumulator = isFunction(Ctor) ? baseCreate(getPrototype(object)) : {};
- }
- } else {
+ var Ctor = object && object.constructor;
+ if (isArrLike) {
+ accumulator = isArr ? new Ctor : [];
+ }
+ else if (isObject(object)) {
+ accumulator = isFunction(Ctor) ? baseCreate(getPrototype(object)) : {};
+ }
+ else {
accumulator = {};
}
}
- (isArr ? arrayEach : baseForOwn)(object, function(value, index, object) {
+ (isArrLike ? arrayEach : baseForOwn)(object, function(value, index, object) {
return iteratee(accumulator, value, index, object);
});
return accumulator;