Make fp versions of set and setWith immutable.

This commit is contained in:
John-David Dalton
2015-12-11 01:39:33 -08:00
parent 82a1010f64
commit f132c0024f
4 changed files with 44 additions and 5 deletions

View File

@@ -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) {