Home Reference Source Test Repository

lib/curryN.js

"use strict";

Object.defineProperty(exports, "__esModule", {
    value: true
});
var curryN = exports.curryN = function curryN(n) {
    return function (fn) {
        for (var _len = arguments.length, args = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
            args[_key - 1] = arguments[_key];
        }

        return function curried() {
            var _this = this;

            for (var _len2 = arguments.length, args = Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {
                args[_key2] = arguments[_key2];
            }

            return args.length >= fn.length ? fn.call.apply(fn, [this].concat(args)) : function () {
                for (var _len3 = arguments.length, rest = Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {
                    rest[_key3] = arguments[_key3];
                }

                return curried.call.apply(curried, [_this].concat(args, rest));
            };
        };
    };
};