aboutsummaryrefslogtreecommitdiff
path: root/deps/npm/node_modules/cli-table2/node_modules/lodash/function/modArgs.js
diff options
context:
space:
mode:
Diffstat (limited to 'deps/npm/node_modules/cli-table2/node_modules/lodash/function/modArgs.js')
-rw-r--r--deps/npm/node_modules/cli-table2/node_modules/lodash/function/modArgs.js58
1 files changed, 58 insertions, 0 deletions
diff --git a/deps/npm/node_modules/cli-table2/node_modules/lodash/function/modArgs.js b/deps/npm/node_modules/cli-table2/node_modules/lodash/function/modArgs.js
new file mode 100644
index 0000000000..49b9b5e682
--- /dev/null
+++ b/deps/npm/node_modules/cli-table2/node_modules/lodash/function/modArgs.js
@@ -0,0 +1,58 @@
+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;