Dry up lib/fp/base.js

This commit is contained in:
John-David Dalton
2015-12-12 12:40:38 -08:00
parent ac0a0ea07e
commit 440eb0876c

View File

@@ -56,58 +56,33 @@ function baseConvert(util, name, func) {
}; };
}; };
var immutArrayWrap = function(func) { var cloneArray = function(array) {
return function() { var length = array ? array.length : 0,
var index = -1, result = Array(length);
length = arguments.length,
args = Array(length);
while (length--) { while (length--) {
args[length] = arguments[length]; result[length] = array[length];
} }
var array = args[0]; return result;
length = array ? array.length : 0; };
args[0] = Array(length); var createCloner = function(func) {
while (++index < length) { return function(object) {
args[0][index] = array[index]; return func({}, object);
}
func.apply(undefined, args);
return args[0];
}; };
}; };
var immutObjectWrap = function(func) { var immutWrap = function(func, cloner) {
return function() { return overArg(func, cloner, true);
var index = -1,
length = arguments.length,
args = Array(length);
while (++index < length) {
args[index] = arguments[index];
}
args[0] = func({}, args[0]);
func.apply(undefined, args);
return args[0];
};
};
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) { var iterateeAry = function(func, n) {
return overArg(func, function(func) {
return baseAry(func, n);
});
};
var overArg = function(func, iteratee, retArg) {
return function() { return function() {
var length = arguments.length, var length = arguments.length,
args = Array(length); args = Array(length);
@@ -115,8 +90,9 @@ function baseConvert(util, name, func) {
while (length--) { while (length--) {
args[length] = arguments[length]; args[length] = arguments[length];
} }
args[0] = baseAry(args[0], n); args[0] = iteratee(args[0]);
return func.apply(undefined, args); var result = func.apply(undefined, args);
return retArg ? args[0] : result;
}; };
}; };
@@ -172,13 +148,13 @@ function baseConvert(util, name, func) {
return wrapper(func); return wrapper(func);
} }
if (mutateMap.array[name]) { if (mutateMap.array[name]) {
func = immutArrayWrap(func); func = immutWrap(func, cloneArray);
} }
else if (mutateMap.object[name]) { else if (mutateMap.object[name]) {
func = immutObjectWrap(func); func = immutWrap(func, createCloner(func));
} }
else if (mutateMap.set[name]) { else if (mutateMap.set[name]) {
func = immutSetWrap(func); func = immutWrap(func, cloneDeep);
} }
var result; var result;
each(mapping.caps, function(cap) { each(mapping.caps, function(cap) {