Blame view

node_modules/es5-ext/function/#/compose.js 560 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
  'use strict';
  
  var callable = require('../../object/valid-callable')
    , aFrom    = require('../../array/from')
  
    , apply = Function.prototype.apply, call = Function.prototype.call
    , callFn = function (arg, fn) { return call.call(fn, this, arg); };
  
  module.exports = function (fn/*, …fnn*/) {
  	var fns, first;
  	if (!fn) callable(fn);
  	fns = [this].concat(aFrom(arguments));
  	fns.forEach(callable);
  	fns = fns.reverse();
  	first = fns[0];
  	fns = fns.slice(1);
  	return function (arg) {
  		return fns.reduce(callFn, apply.call(first, this, arguments));
  	};
  };