mirror of
https://github.com/whoisclebs/lodash.git
synced 2026-02-04 08:57:49 +00:00
Make fp versions of set and setWith immutable.
This commit is contained in:
@@ -22,6 +22,7 @@ function baseConvert(util, name, func) {
|
||||
|
||||
var _ = isLib ? func : {
|
||||
'ary': util.ary,
|
||||
'cloneDeep': util.cloneDeep,
|
||||
'curry': util.curry,
|
||||
'forEach': util.forEach,
|
||||
'isFunction': util.isFunction,
|
||||
@@ -31,6 +32,7 @@ function baseConvert(util, name, func) {
|
||||
};
|
||||
|
||||
var ary = _.ary,
|
||||
cloneDeep = _.cloneDeep,
|
||||
curry = _.curry,
|
||||
each = _.forEach,
|
||||
isFunction = _.isFunction,
|
||||
@@ -90,6 +92,21 @@ function baseConvert(util, name, func) {
|
||||
};
|
||||
};
|
||||
|
||||
var immutSetWrap = function(func) {
|
||||
return function() {
|
||||
var index = -1,
|
||||
length = arguments.length,
|
||||
args = Array(length);
|
||||
|
||||
while (++index < length) {
|
||||
args[index] = arguments[index];
|
||||
}
|
||||
args[0] = cloneDeep(args[0]);
|
||||
func.apply(undefined, args);
|
||||
return args[0];
|
||||
};
|
||||
};
|
||||
|
||||
var iterateeAry = function(func, n) {
|
||||
return function() {
|
||||
var length = arguments.length,
|
||||
@@ -160,6 +177,9 @@ function baseConvert(util, name, func) {
|
||||
else if (mutateMap.object[name]) {
|
||||
func = immutObjectWrap(func);
|
||||
}
|
||||
else if (mutateMap.set[name]) {
|
||||
func = immutSetWrap(func);
|
||||
}
|
||||
var result;
|
||||
each(mapping.caps, function(cap) {
|
||||
each(mapping.aryMethodMap[cap], function(otherName) {
|
||||
|
||||
Reference in New Issue
Block a user