You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

24 lines
784 B

'use strict';
var toPosInt = require('../../number/to-pos-integer')
, callable = require('../../object/valid-callable')
, defineLength = require('../_define-length')
, slice = Array.prototype.slice, apply = Function.prototype.apply
, curry;
curry = function self(fn, length, preArgs) {
return defineLength(function () {
var args = preArgs ?
preArgs.concat(slice.call(arguments, 0, length - preArgs.length)) :
slice.call(arguments, 0, length);
return (args.length === length) ? apply.call(fn, this, args) :
self(fn, length, args);
}, preArgs ? (length - preArgs.length) : length);
};
module.exports = function (/*length*/) {
var length = arguments[0];
return curry(callable(this),
isNaN(length) ? toPosInt(this.length) : toPosInt(length));
};