27 lines
807 B
JavaScript
27 lines
807 B
JavaScript
|
(function (global, factory) {
|
||
|
typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :
|
||
|
typeof define === 'function' && define.amd ? define(factory) :
|
||
|
(global = global || self, global.curri = factory());
|
||
|
}(this, function () { 'use strict';
|
||
|
|
||
|
/**
|
||
|
* Function to curry any javascript method
|
||
|
* @param {Function} fn - the target function we want to curry
|
||
|
* @param {...[args]} acc - initial arguments
|
||
|
* @returns {Function|*} it will return a function until the target function
|
||
|
* will receive all of its arguments
|
||
|
*/
|
||
|
function curry(fn, ...acc) {
|
||
|
return (...args) => {
|
||
|
args = [...acc, ...args];
|
||
|
|
||
|
return args.length < fn.length ?
|
||
|
curry(fn, ...args) :
|
||
|
fn(...args)
|
||
|
}
|
||
|
}
|
||
|
|
||
|
return curry;
|
||
|
|
||
|
}));
|