import curry2 from "../function/curry2";
/**
* Works a bit like the `switch` structure.
* Contains pairs condition and transform functions.
* The first condition function that returns a truthy value will cause its paired transform function to be called.
* Both the condition and transform functions are passed the `arg` param.
* The `pairs` argument's format should look like this:
* <pre>
* [
* [x => x > 5, x => x + 5],
* [x => x < 5, x => x - 5],
* [() => true, x => x],
* ]
* </pre>
* If you have the last pair's condition function always return true,
* it will work like the `default` case in a `switch` statement.
* If you don't have a default case and none of the condition functions pass,
* then the funciton will return `undefined`.
*
* @param {any[]} pairs
* @param {any} arg
* @returns {any}
*/
const cond = (pairs, arg) => {
for (let index = 0; index < pairs.length; index++) {
const pair = pairs[index];
const condFn = pair[0];
const transformFn = pair[1];
if (condFn(arg)) {
return transformFn(arg);
}
}
};
export default curry2(cond);