Ensure fp _.partial and _.partialRight accept an args param.

This commit is contained in:
John-David Dalton
2016-01-31 22:26:27 -08:00
parent b38cf204f7
commit 163fdb46f0
4 changed files with 46 additions and 8 deletions

View File

@@ -29,7 +29,8 @@ function baseConvert(util, name, func) {
'isFunction': util.isFunction,
'iteratee': util.iteratee,
'keys': util.keys,
'rearg': util.rearg
'rearg': util.rearg,
'rest': util.rest
};
var ary = _.ary,
@@ -38,7 +39,8 @@ function baseConvert(util, name, func) {
each = _.forEach,
isFunction = _.isFunction,
keys = _.keys,
rearg = _.rearg;
rearg = _.rearg,
spread = _.spread;
var baseArity = function(func, n) {
return n == 2
@@ -168,9 +170,13 @@ function baseConvert(util, name, func) {
each(mapping.aryMethod[cap], function(otherName) {
if (name == otherName) {
var aryN = !isLib && mapping.iterateeAry[name],
reargIndexes = mapping.iterateeRearg[name];
reargIndexes = mapping.iterateeRearg[name],
spreadStart = mapping.methodSpread[name];
result = spreadStart === undefined
? ary(func, cap)
: spread(func, spreadStart);
result = ary(func, cap);
if (cap > 1 && !mapping.skipRearg[name]) {
result = rearg(result, mapping.methodRearg[name] || mapping.aryRearg[cap]);
}
@@ -198,6 +204,9 @@ function baseConvert(util, name, func) {
if (!isLib) {
return wrap(name, func);
}
// Add placeholder alias.
_.__ = placeholder;
// Iterate over methods for the current ary cap.
var pairs = [];
each(mapping.caps, function(cap) {

View File

@@ -41,7 +41,7 @@ exports.aryMethod = {
'attempt', 'ceil', 'create', 'curry', 'curryRight', 'floor', 'fromPairs',
'invert', 'iteratee', 'memoize', 'method', 'methodOf', 'mixin', 'over',
'overEvery', 'overSome', 'rest', 'reverse', 'round', 'runInContext',
'template', 'trim', 'trimEnd', 'trimStart', 'uniqueId', 'words'
'spread', 'template', 'trim', 'trimEnd', 'trimStart', 'uniqueId', 'words'
],
2: [
'add', 'after', 'ary', 'assign', 'assignIn', 'at', 'before', 'bind', 'bindKey',
@@ -147,6 +147,12 @@ exports.methodRearg = {
'transform': [2, 0, 1]
};
/** Used to map method names to spread configs. */
exports.methodSpread = {
'partial': 1,
'partialRight': 1
};
/** Used to identify methods which mutate arrays or objects. */
exports.mutate = {
'array': {