Cleanup _.modArgs.

This commit is contained in:
jdalton
2015-06-02 08:41:01 -07:00
parent de4463d9a8
commit 005b587588
2 changed files with 72 additions and 114 deletions

View File

@@ -7387,73 +7387,6 @@
};
}
/**
* Creates a function that runs each argument through a transform function.
*
* @static
* @memberOf _
* @category Function
* @param {Function} func The function to wrap.
* @param {...Function} [transforms] The function to transform the corresponding argument.
* @returns {Function} Returns the new function.
* @example
*
* var square = function(x) {
* return x * x;
* };
*
* var double = function(x) {
* return x * 2;
* };
*
* var fn = _.modArgs(function(x, y) {
* return [x , y];
* }, square, double);
*
* fn(1, 2); // => [1, 4]
* fn(5, 10); // => [25, 20]
*
* // Ensure proper argument types
*
* var defaultNumber = function(defaultValue, num) {
* return _.isUndefined(num) ? defaultValue : num;
* };
*
* var alwaysArray = function(list) {
* var result = list;
*
* if (_.isUndefined(list)) {
* result = [];
* } else if (!_.isArray(list)) {
* result = [list];
* }
*
* return result;
* };
*
* var fn = _.modArgs(function(x, y) {
* console.log(x, y);
* }, alwaysArray, _.partial(defaultNumber, 0));
*
* fn(); // => [], 0
* fn('hello'); // => ['hello'], 0
* fn([true], 15); // => [true], 15
*/
var modArgs = restParam(function(callback, transforms) {
var length = transforms.length;
return function() {
var index = -1;
while (++index < length) {
arguments[index] = transforms[index].call(this, arguments[index]);
}
return callback.apply(this, arguments);
}
});
/**
* Creates a function that accepts up to `n` arguments ignoring any
* additional arguments.
@@ -8070,6 +8003,46 @@
return memoized;
}
/**
* Creates a function that runs each argument through a transform function.
*
* @static
* @memberOf _
* @category Function
* @param {Function} func The function to wrap.
* @param {...Function} [transforms] The function to transform the corresponding argument.
* @returns {Function} Returns the new function.
* @example
*
* function doubled(n) {
* return n * 2;
* }
*
* function square(n) {
* return n * n;
* }
*
* var modded = _.modArgs(function(x, y) {
* return [x , y];
* }, square, doubled);
*
* modded(1, 2);
* // => [1, 4]
*
* modded(5, 10);
* // => [25, 20]
*/
var modArgs = restParam(function(func, transforms) {
var length = transforms.length;
return restParam(function(args) {
var index = nativeMin(args.length, length);
while (index--) {
args[index] = transforms[index](args[index]);
}
return func.apply(this, args);
});
});
/**
* Creates a function that negates the result of the predicate `func`. The
* `func` predicate is invoked with the `this` binding and arguments of the
@@ -11913,7 +11886,6 @@
// Add functions that return wrapped values when chaining.
lodash.after = after;
lodash.ary = ary;
lodash.modArgs = modArgs;
lodash.assign = assign;
lodash.at = at;
lodash.before = before;
@@ -11969,6 +11941,7 @@
lodash.method = method;
lodash.methodOf = methodOf;
lodash.mixin = mixin;
lodash.modArgs = modArgs;
lodash.negate = negate;
lodash.omit = omit;
lodash.once = once;