initial commit
This commit is contained in:
24
node_modules/es5-ext/function/#/curry.js
generated
vendored
Normal file
24
node_modules/es5-ext/function/#/curry.js
generated
vendored
Normal file
@@ -0,0 +1,24 @@
|
||||
"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));
|
||||
};
|
||||
Reference in New Issue
Block a user