UNPKG

foop

Version:

interfaces that describe their intentions.

44 lines (42 loc) 3.51 kB
var argumentor = require('../cast/argumentor') var curry = require('./curry') /** * Returns a new function much like the supplied one, except that the first two * arguments' order is reversed. * * @memberOf fp * @symb 🙃🙃 * @since 5.0.0-beta.4 * * @param {Function} fn The function to invoke with its first two parameters reversed. * @return {*} The result of invoking `fn` with its first two parameters' order reversed. * * @extends fp/flip * @variation just flip, but flips arg 1-2 instead of reversing all arguments * @see fp/flip * @TODO flipN * * @types fp * @tests fp/flip2 * * @example * * var mergeThree = (a, b, c) => [].concat(a, b, c) * mergeThree(1, 2, 3); //=> [1, 2, 3] * flip(mergeThree)(1, 2, 3); //=> [2, 1, 3] * * const flipped = flip((...args) => args) * flipped('a', 'b', 'c', 'd') * //=> ['b', 'a', 'c', 'd'] * */ module.exports = function flip2(fn) { return curry(2, function(a, b) { var args = argumentor.apply(null, arguments) // .slice(n).reverse().splice() args[0] = b args[1] = a return fn.apply(this, args) }) } //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmxpcDIuanMiLCJzb3VyY2VzIjpbImZsaXAyLmpzIl0sInNvdXJjZXNDb250ZW50IjpbImNvbnN0IGFyZ3VtZW50b3IgPSByZXF1aXJlKCcuLi9jYXN0L2FyZ3VtZW50b3InKVxuY29uc3QgY3VycnkgPSByZXF1aXJlKCcuL2N1cnJ5JylcblxuLyoqXG4gKiBSZXR1cm5zIGEgbmV3IGZ1bmN0aW9uIG11Y2ggbGlrZSB0aGUgc3VwcGxpZWQgb25lLCBleGNlcHQgdGhhdCB0aGUgZmlyc3QgdHdvXG4gKiBhcmd1bWVudHMnIG9yZGVyIGlzIHJldmVyc2VkLlxuICpcbiAqIEBtZW1iZXJPZiBmcFxuICogQHN5bWIg8J+Zg/CfmYNcbiAqIEBzaW5jZSA1LjAuMC1iZXRhLjRcbiAqXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBmbiBUaGUgZnVuY3Rpb24gdG8gaW52b2tlIHdpdGggaXRzIGZpcnN0IHR3byBwYXJhbWV0ZXJzIHJldmVyc2VkLlxuICogQHJldHVybiB7Kn0gVGhlIHJlc3VsdCBvZiBpbnZva2luZyBgZm5gIHdpdGggaXRzIGZpcnN0IHR3byBwYXJhbWV0ZXJzJyBvcmRlciByZXZlcnNlZC5cbiAqXG4gKiBAZXh0ZW5kcyBmcC9mbGlwXG4gKiBAdmFyaWF0aW9uIGp1c3QgZmxpcCwgYnV0IGZsaXBzIGFyZyAxLTIgaW5zdGVhZCBvZiByZXZlcnNpbmcgYWxsIGFyZ3VtZW50c1xuICogQHNlZSBmcC9mbGlwXG4gKiBAVE9ETyBmbGlwTlxuICpcbiAqIEB0eXBlcyBmcFxuICogQHRlc3RzIGZwL2ZsaXAyXG4gKlxuICogQGV4YW1wbGVcbiAqXG4gKiAgICAgIHZhciBtZXJnZVRocmVlID0gKGEsIGIsIGMpID0+IFtdLmNvbmNhdChhLCBiLCBjKVxuICogICAgICBtZXJnZVRocmVlKDEsIDIsIDMpOyAgICAgICAvLz0+IFsxLCAyLCAzXVxuICogICAgICBmbGlwKG1lcmdlVGhyZWUpKDEsIDIsIDMpOyAvLz0+IFsyLCAxLCAzXVxuICpcbiAqICAgICAgY29uc3QgZmxpcHBlZCA9IGZsaXAoKC4uLmFyZ3MpID0+IGFyZ3MpXG4gKiAgICAgIGZsaXBwZWQoJ2EnLCAnYicsICdjJywgJ2QnKVxuICogICAgICAvLz0+IFsnYicsICdhJywgJ2MnLCAnZCddXG4gKlxuICovXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIGZsaXAyKGZuKSB7XG4gIHJldHVybiBjdXJyeSgyLCBmdW5jdGlvbihhLCBiKSB7XG4gICAgY29uc3QgYXJncyA9IGFyZ3VtZW50b3IuYXBwbHkobnVsbCwgYXJndW1lbnRzKVxuICAgIC8vIC5zbGljZShuKS5yZXZlcnNlKCkuc3BsaWNlKClcbiAgICBhcmdzWzBdID0gYlxuICAgIGFyZ3NbMV0gPSBhXG4gICAgcmV0dXJuIGZuLmFwcGx5KHRoaXMsIGFyZ3MpXG4gIH0pXG59XG4iXSwibmFtZXMiOlsiY29uc3QiXSwibWFwcGluZ3MiOiJBQUFBQSxHQUFLLENBQUMsVUFBVSxHQUFHLE9BQU8sQ0FBQyxvQkFBb0IsQ0FBQztBQUNoREEsR0FBSyxDQUFDLEtBQUssR0FBRyxPQUFPLENBQUMsU0FBUyxDQUFDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQWdDaEMsTUFBTSxDQUFDLE9BQU8sR0FBRyxTQUFTLEtBQUssQ0FBQyxFQUFFLEVBQUU7RUFDbEMsT0FBTyxLQUFLLENBQUMsQ0FBQyxFQUFFLFNBQVMsQ0FBQyxFQUFFLENBQUMsRUFBRTtJQUM3QkEsR0FBSyxDQUFDLElBQUksR0FBRyxVQUFVLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxTQUFTLENBQUM7O0lBRTlDLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDO0lBQ1gsSUFBSSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUM7SUFDWCxPQUFPLEVBQUUsQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQztHQUM1QixDQUFDO0NBQ0g7In0=