Sha256: 2ea1fa278bb5ac7860d1082cac5b0800f98b641acf8ae57aa7cd31c173d30938

Contents?: true

Size: 1.56 KB

Versions: 153

Compression:

Stored size: 1.56 KB

Contents

var arrayEvery = require('../internal/arrayEvery'),
    baseFlatten = require('../internal/baseFlatten'),
    baseIsFunction = require('../internal/baseIsFunction'),
    restParam = require('./restParam');

/** Used as the `TypeError` message for "Functions" methods. */
var FUNC_ERROR_TEXT = 'Expected a function';

/* Native method references for those with the same name as other `lodash` methods. */
var nativeMin = Math.min;

/**
 * Creates a function that runs each argument through a corresponding
 * transform function.
 *
 * @static
 * @memberOf _
 * @category Function
 * @param {Function} func The function to wrap.
 * @param {...(Function|Function[])} [transforms] The functions to transform
 * arguments, specified as individual functions or arrays of functions.
 * @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) {
  transforms = baseFlatten(transforms);
  if (typeof func != 'function' || !arrayEvery(transforms, baseIsFunction)) {
    throw new TypeError(FUNC_ERROR_TEXT);
  }
  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);
  });
});

module.exports = modArgs;

Version data entries

153 entries across 80 versions & 8 rubygems

Version Path
ilog-0.4.1 node_modules/contents/node_modules/lodash/function/modArgs.js
ilog-0.4.1 node_modules/babel-plugin-proto-to-assign/node_modules/lodash/function/modArgs.js
ilog-0.4.1 node_modules/babel/node_modules/lodash/function/modArgs.js
ilog-0.4.0 node_modules/babel/node_modules/lodash/function/modArgs.js
ilog-0.4.0 node_modules/contents/node_modules/lodash/function/modArgs.js
ilog-0.4.0 node_modules/babel-plugin-proto-to-assign/node_modules/lodash/function/modArgs.js
ilog-0.3.3 node_modules/babel/node_modules/lodash/function/modArgs.js
ilog-0.3.3 node_modules/contents/node_modules/lodash/function/modArgs.js
ilog-0.3.3 node_modules/babel-plugin-proto-to-assign/node_modules/lodash/function/modArgs.js
trusty-festivity-extension-2.6.3 node_modules/bower/node_modules/configstore/node_modules/js-yaml/node_modules/argparse/node_modules/lodash/function/modArgs.js
trusty-festivity-extension-2.6.3 node_modules/bower/node_modules/inquirer/node_modules/lodash/function/modArgs.js
trusty-festivity-extension-2.6.2 node_modules/bower/node_modules/configstore/node_modules/js-yaml/node_modules/argparse/node_modules/lodash/function/modArgs.js
trusty-festivity-extension-2.6.2 node_modules/bower/node_modules/inquirer/node_modules/lodash/function/modArgs.js
trusty-festivity-extension-2.6.1 node_modules/bower/node_modules/configstore/node_modules/js-yaml/node_modules/argparse/node_modules/lodash/function/modArgs.js
trusty-festivity-extension-2.6.1 node_modules/bower/node_modules/inquirer/node_modules/lodash/function/modArgs.js
xcodebuild-helper-1.2.5 externals/ios-sim-master/node_modules/lodash/function/modArgs.js
trusty-festivity-extension-2.6 node_modules/bower/node_modules/configstore/node_modules/js-yaml/node_modules/argparse/node_modules/lodash/function/modArgs.js
trusty-festivity-extension-2.6 node_modules/bower/node_modules/inquirer/node_modules/lodash/function/modArgs.js
trusty-festivity-extension-2.5.19 node_modules/bower/node_modules/configstore/node_modules/js-yaml/node_modules/argparse/node_modules/lodash/function/modArgs.js
trusty-festivity-extension-2.5.19 node_modules/bower/node_modules/inquirer/node_modules/lodash/function/modArgs.js