UNPKG

squad

Version:

right-to-left function composition

54 lines (48 loc) 1.43 kB
'use strict'; var compose = [function () { return function () {}; }, function (f) { return function () { return f.apply(undefined, arguments); }; }, function (f1, f2) { return function () { return f1(f2.apply(undefined, arguments)); }; }, function (f1, f2, f3) { return function () { return f1(f2(f3.apply(undefined, arguments))); }; }, function (f1, f2, f3, f4) { return function () { return f1(f2(f3(f4.apply(undefined, arguments)))); }; }, function (f1, f2, f3, f4, f5) { return function () { return f1(f2(f3(f4(f5.apply(undefined, arguments))))); }; }, function (f1, f2, f3, f4, f5, f6) { return function () { return f1(f2(f3(f4(f5(f6.apply(undefined, arguments)))))); }; }, function (f1, f2, f3, f4, f5, f6, f7) { return function () { return f1(f2(f3(f4(f5(f6(f7.apply(undefined, arguments))))))); }; }]; module.exports = function () { for (var _len = arguments.length, fns = Array(_len), _key = 0; _key < _len; _key++) { fns[_key] = arguments[_key]; } if (fns.length < compose.length) return compose[fns.length].apply(compose, fns); return bigCompose(fns); }; function bigCompose(fns) { return function () { var i = fns.length - 1; var value = fns[i].apply(fns, arguments); while (--i) { value = fns[i](value); }return value; }; }