basant307/AI_Governance_Project
045
1import apply from './_apply.js';2import arrayMap from './_arrayMap.js';3import baseIteratee from './_baseIteratee.js';4import baseRest from './_baseRest.js';5 6/** Error message constants. */7var FUNC_ERROR_TEXT = 'Expected a function';8 9/**10 * Creates a function that iterates over `pairs` and invokes the corresponding11 * function of the first predicate to return truthy. The predicate-function12 * pairs are invoked with the `this` binding and arguments of the created13 * function.14 *15 * @static16 * @memberOf _17 * @since 4.0.018 * @category Util19 * @param {Array} pairs The predicate-function pairs.20 * @returns {Function} Returns the new composite function.21 * @example22 *23 * var func = _.cond([24 * [_.matches({ 'a': 1 }), _.constant('matches A')],25 * [_.conforms({ 'b': _.isNumber }), _.constant('matches B')],26 * [_.stubTrue, _.constant('no match')]27 * ]);28 *29 * func({ 'a': 1, 'b': 2 });30 * // => 'matches A'31 *32 * func({ 'a': 0, 'b': 1 });33 * // => 'matches B'34 *35 * func({ 'a': '1', 'b': '2' });36 * // => 'no match'37 */38function cond(pairs) {39 var length = pairs == null ? 0 : pairs.length,40 toIteratee = baseIteratee;41 42 pairs = !length ? [] : arrayMap(pairs, function(pair) {43 if (typeof pair[1] != 'function') {44 throw new TypeError(FUNC_ERROR_TEXT);45 }46 return [toIteratee(pair[0]), pair[1]];47 });48 49 return baseRest(function(args) {50 var index = -1;51 while (++index < length) {52 var pair = pairs[index];53 if (apply(pair[0], this, args)) {54 return apply(pair[1], this, args);55 }56 }57 });58}59 60export default cond;61 