mirror of https://github.com/lukechilds/node.git
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
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));
|
|
};
|
|
|