UNPKG

ramda-extension

Version:

Helpful functions built on top of the mighty Ramda

45 lines (38 loc) 1.44 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _ramda = require("ramda"); var _applyCompose = _interopRequireDefault(require("./applyCompose")); var _xPairs = _interopRequireDefault(require("./xPairs")); var getPredicates = (0, _ramda.compose)((0, _ramda.map)((0, _ramda.juxt)([_applyCompose.default, _ramda.last])), _xPairs.default); /** * Returns first result from evaluation of functions in the list, that satisfies predicate. * Returns `undefined` otherwise. * * @func * @category Function * @see dispatch * * @param {function} predicate Predicate that is applied to result of calling fn from `listFns` with `values` * @param {array} listFns List of functions * @param {*} values Values applied to functions from `listFns` * @return {any} Returns first result of calling fn from `listFns` with `values` that satisfies `predicate`. * * @example * * const firstTruthy = R_.dispatchWith(Boolean)([ * prop("foo"), * prop("bar"), * ]) * * firstTruthy({foo: "foo", bar: false}) // "foo" * firstTruthy({foo: false, bar: "bar" }) // "bar" * * @sig [a] -> b|undefined */ var dispatchWith = (0, _ramda.converge)((0, _ramda.call)(_ramda.cond), [getPredicates]); var _default = dispatchWith; exports.default = _default;