Blame view

node_modules/es5-ext/function/#/curry.js 784 Bytes
f7563de62   Palak Handa   first commit
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
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));
  };