UNPKG

foop

Version:

interfaces that describe their intentions.

48 lines (46 loc) 3.71 kB
var argumentor = require('../cast/argumentor') /** * @desc flip the fn args: * Creates a function that invokes `func` with arguments 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. * * @func * @ramda v0.1.0 * @category Function * @sig ((a, b, c, ...) -> z) -> (b -> a -> c -> ... -> z) * * @TODO could also just call with fn.apply([b, a]), and have flipN * * {@link https://github.com/lodash/lodash/blob/4.2.1-npm-packages/lodash.flip/index.js lodash-flip} * {@link https://github.com/ramda/ramda/blob/master/src/flip.js ramda-flip} * @see {@link ramda-flip} * @see {@link lodash-flip} * @see fp/reverse * * @types fp * @tests fp/flip * * @example * * var mergeThree = (a, b, c) => [].concat(a, b, c) * mergeThree(1, 2, 3); //=> [1, 2, 3] * flip(mergeThree)(1, 2, 3); //=> [3, 2, 1] * * const flipped = flip((...args) => args) * flipped('a', 'b', 'c', 'd') * //=> ['d', 'c', 'b', 'a'] * */ module.exports = function flip(fn) { // could wrap in arity return function() { return fn.apply(this, argumentor.apply(null, arguments).reverse()) } } //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmxpcC5qcyIsInNvdXJjZXMiOlsiZmxpcC5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJjb25zdCBhcmd1bWVudG9yID0gcmVxdWlyZSgnLi4vY2FzdC9hcmd1bWVudG9yJylcblxuLyoqXG4gKiBAZGVzYyBmbGlwIHRoZSBmbiBhcmdzOlxuICogICAgICAgQ3JlYXRlcyBhIGZ1bmN0aW9uIHRoYXQgaW52b2tlcyBgZnVuY2Agd2l0aCBhcmd1bWVudHMgcmV2ZXJzZWQuXG4gKlxuICogQG1lbWJlck9mIGZwXG4gKiBAc3ltYiDwn5mDXG4gKiBAc2luY2UgNS4wLjAtYmV0YS40XG4gKlxuICogQHBhcmFtIHtGdW5jdGlvbn0gZm4gVGhlIGZ1bmN0aW9uIHRvIGludm9rZSB3aXRoIGl0cyBmaXJzdCB0d28gcGFyYW1ldGVycyByZXZlcnNlZC5cbiAqIEByZXR1cm4geyp9IFRoZSByZXN1bHQgb2YgaW52b2tpbmcgYGZuYCB3aXRoIGl0cyBmaXJzdCB0d28gcGFyYW1ldGVycycgb3JkZXIgcmV2ZXJzZWQuXG4gKlxuICogQGZ1bmNcbiAqIEByYW1kYSB2MC4xLjBcbiAqIEBjYXRlZ29yeSBGdW5jdGlvblxuICogQHNpZyAoKGEsIGIsIGMsIC4uLikgLT4geikgLT4gKGIgLT4gYSAtPiBjIC0+IC4uLiAtPiB6KVxuICpcbiAqIEBUT0RPIGNvdWxkIGFsc28ganVzdCBjYWxsIHdpdGggZm4uYXBwbHkoW2IsIGFdKSwgYW5kIGhhdmUgZmxpcE5cbiAqXG4gKiB7QGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL2xvZGFzaC9sb2Rhc2gvYmxvYi80LjIuMS1ucG0tcGFja2FnZXMvbG9kYXNoLmZsaXAvaW5kZXguanMgbG9kYXNoLWZsaXB9XG4gKiB7QGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL3JhbWRhL3JhbWRhL2Jsb2IvbWFzdGVyL3NyYy9mbGlwLmpzIHJhbWRhLWZsaXB9XG4gKiBAc2VlIHtAbGluayByYW1kYS1mbGlwfVxuICogQHNlZSB7QGxpbmsgbG9kYXNoLWZsaXB9XG4gKiBAc2VlIGZwL3JldmVyc2VcbiAqXG4gKiBAdHlwZXMgZnBcbiAqIEB0ZXN0cyBmcC9mbGlwXG4gKlxuICogQGV4YW1wbGVcbiAqXG4gKiAgICAgIHZhciBtZXJnZVRocmVlID0gKGEsIGIsIGMpID0+IFtdLmNvbmNhdChhLCBiLCBjKVxuICogICAgICBtZXJnZVRocmVlKDEsIDIsIDMpOyAgICAgICAvLz0+IFsxLCAyLCAzXVxuICogICAgICBmbGlwKG1lcmdlVGhyZWUpKDEsIDIsIDMpOyAvLz0+IFszLCAyLCAxXVxuICpcbiAqICAgICAgY29uc3QgZmxpcHBlZCA9IGZsaXAoKC4uLmFyZ3MpID0+IGFyZ3MpXG4gKiAgICAgIGZsaXBwZWQoJ2EnLCAnYicsICdjJywgJ2QnKVxuICogICAgICAvLz0+IFsnZCcsICdjJywgJ2InLCAnYSddXG4gKlxuICovXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIGZsaXAoZm4pIHtcbiAgLy8gY291bGQgd3JhcCBpbiBhcml0eVxuICByZXR1cm4gZnVuY3Rpb24oKSB7XG4gICAgcmV0dXJuIGZuLmFwcGx5KHRoaXMsIGFyZ3VtZW50b3IuYXBwbHkobnVsbCwgYXJndW1lbnRzKS5yZXZlcnNlKCkpXG4gIH1cbn1cbiJdLCJuYW1lcyI6WyJjb25zdCJdLCJtYXBwaW5ncyI6IkFBQUFBLEdBQUssQ0FBQyxVQUFVLEdBQUcsT0FBTyxDQUFDLG9CQUFvQixDQUFDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBd0NoRCxNQUFNLENBQUMsT0FBTyxHQUFHLFNBQVMsSUFBSSxDQUFDLEVBQUUsRUFBRTs7RUFFakMsT0FBTyxXQUFXO0lBQ2hCLE9BQU8sRUFBRSxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsVUFBVSxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsU0FBUyxDQUFDLENBQUMsT0FBTyxFQUFFLENBQUM7R0FDbkU7Q0FDRjsifQ==