mirror of
https://github.com/whoisclebs/lodash.git
synced 2026-02-11 11:27:50 +00:00
Dry up lib/fp/base.js
This commit is contained in:
@@ -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) {
|
||||||
|
|||||||
Reference in New Issue
Block a user