Bump to v4.5.1.

This commit is contained in:
John-David Dalton
2016-02-21 20:59:42 -08:00
parent 0dd6798d8b
commit 7eeb5ebd61
36 changed files with 487 additions and 208 deletions

View File

@@ -44,7 +44,7 @@ function baseConvert(util, name, func, options) {
var helpers = isLib ? func : {
'ary': util.ary,
'cloneDeep': util.cloneDeep,
'clone': util.clone,
'curry': util.curry,
'forEach': util.forEach,
'isArray': util.isArray,
@@ -52,21 +52,29 @@ function baseConvert(util, name, func, options) {
'iteratee': util.iteratee,
'keys': util.keys,
'rearg': util.rearg,
'spread': util.spread
'spread': util.spread,
'toPath': util.toPath
};
var ary = helpers.ary,
cloneDeep = helpers.cloneDeep,
clone = helpers.clone,
curry = helpers.curry,
each = helpers.forEach,
isArray = helpers.isArray,
isFunction = helpers.isFunction,
keys = helpers.keys,
rearg = helpers.rearg,
spread = helpers.spread;
spread = helpers.spread,
toPath = helpers.toPath;
var aryMethodKeys = keys(mapping.aryMethod);
var baseArity = function(func, n) {
return n == 2
? function(a, b) { return func.apply(undefined, arguments); }
: function(a) { return func.apply(undefined, arguments); };
};
var baseAry = function(func, n) {
return n == 2
? function(a, b) { return func(a, b); }
@@ -83,6 +91,26 @@ function baseConvert(util, name, func, options) {
return result;
};
var cloneByPath = function(object, path) {
path = toPath(path);
var index = -1,
length = path.length,
result = clone(Object(object)),
nested = result;
while (nested != null && ++index < length) {
var key = path[index],
value = nested[key];
if (value != null) {
nested[key] = clone(Object(value));
}
nested = nested[key];
}
return result;
};
var createCloner = function(func) {
return function(object) {
return func({}, object);
@@ -99,7 +127,7 @@ function baseConvert(util, name, func, options) {
while (length--) {
args[length] = arguments[length];
}
var result = args[0] = cloner(args[0]);
var result = args[0] = cloner.apply(undefined, args);
func.apply(undefined, args);
return result;
};
@@ -107,9 +135,14 @@ function baseConvert(util, name, func, options) {
var iterateeAry = function(func, n) {
return overArg(func, function(func) {
return typeof func == 'function'
? baseAry(func, n)
: func;
return typeof func == 'function' ? baseAry(func, n) : func;
});
};
var iterateeRearg = function(func, indexes) {
return overArg(func, function(func) {
var n = indexes.length;
return baseArity(rearg(baseAry(func, n), indexes), n);
});
};
@@ -141,15 +174,15 @@ function baseConvert(util, name, func, options) {
'iteratee': function(iteratee) {
return function() {
var func = arguments[0],
arity = arguments[1];
arity = arguments[1],
result = iteratee(func, arity),
length = result.length;
if (!config.cap) {
return iteratee(func, arity);
if (config.cap && typeof arity == 'number') {
arity = arity > 2 ? (arity - 2) : 1;
return (length && length <= arity) ? result : baseAry(result, arity);
}
arity = arity > 2 ? (arity - 2) : 1;
func = iteratee(func);
var length = func.length;
return (length && length <= arity) ? func : baseAry(func, arity);
return result;
};
},
'mixin': function(mixin) {
@@ -204,7 +237,7 @@ function baseConvert(util, name, func, options) {
wrapped = immutWrap(func, createCloner(func));
}
else if (mutateMap.set[name]) {
wrapped = immutWrap(func, cloneDeep);
wrapped = immutWrap(func, cloneByPath);
}
}
var result;
@@ -212,6 +245,7 @@ function baseConvert(util, name, func, options) {
each(mapping.aryMethod[aryKey], function(otherName) {
if (name == otherName) {
var aryN = !isLib && mapping.iterateeAry[name],
reargIndexes = mapping.iterateeRearg[name],
spreadStart = mapping.methodSpread[name];
result = wrapped;
@@ -223,8 +257,12 @@ function baseConvert(util, name, func, options) {
if (config.rearg && aryKey > 1 && (forceRearg || !mapping.skipRearg[name])) {
result = rearg(result, mapping.methodRearg[name] || mapping.aryRearg[aryKey]);
}
if (config.cap && aryN) {
result = iterateeAry(result, aryN);
if (config.cap) {
if (reargIndexes) {
result = iterateeRearg(result, reargIndexes);
} else if (aryN) {
result = iterateeAry(result, aryN);
}
}
if (config.curry && aryKey > 1) {
result = curry(result, aryKey);