Join GitHub today
GitHub is home to over 50 million developers working together to host and review code, manage projects, and build software together.
Sign up| import map from './map.js' | |
| /** | |
| * Creates a function that iterates over `pairs` and invokes the corresponding | |
| * function of the first predicate to return truthy. The predicate-function | |
| * pairs are invoked with the `this` binding and arguments of the created | |
| * function. | |
| * | |
| * @since 4.0.0 | |
| * @category Util | |
| * @param {Array} pairs The predicate-function pairs. | |
| * @returns {Function} Returns the new composite function. | |
| * @example | |
| * | |
| * const func = cond([ | |
| * [matches({ 'a': 1 }), () => 'matches A'], | |
| * [conforms({ 'b': isNumber }), () => 'matches B'], | |
| * [() => true, () => 'no match'] | |
| * ]) | |
| * | |
| * func({ 'a': 1, 'b': 2 }) | |
| * // => 'matches A' | |
| * | |
| * func({ 'a': 0, 'b': 1 }) | |
| * // => 'matches B' | |
| * | |
| * func({ 'a': '1', 'b': '2' }) | |
| * // => 'no match' | |
| */ | |
| function cond(pairs) { | |
| const length = pairs == null ? 0 : pairs.length | |
| pairs = !length ? [] : map(pairs, (pair) => { | |
| if (typeof pair[1] !== 'function') { | |
| throw new TypeError('Expected a function') | |
| } | |
| return [pair[0], pair[1]] | |
| }) | |
| return (...args) => { | |
| for (const pair of pairs) { | |
| if (pair[0].apply(this, args)) { | |
| return pair[1].apply(this, args) | |
| } | |
| } | |
| } | |
| } | |
| export default cond |

Formed in 2009, the Archive Team (not to be confused with the archive.org Archive-It Team) is a rogue archivist collective dedicated to saving copies of rapidly dying or deleted websites for the sake of history and digital heritage. The group is 100% composed of volunteers and interested parties, and has expanded into a large amount of related projects for saving online and digital history.
