aboutsummaryrefslogtreecommitdiff
path: root/node_modules/es5-ext/function/#/compose.js
diff options
context:
space:
mode:
authorFlorian Dold <florian.dold@gmail.com>2017-08-14 05:01:11 +0200
committerFlorian Dold <florian.dold@gmail.com>2017-08-14 05:02:09 +0200
commit363723fc84f7b8477592e0105aeb331ec9a017af (patch)
tree29f92724f34131bac64d6a318dd7e30612e631c7 /node_modules/es5-ext/function/#/compose.js
parent5634e77ad96bfe1818f6b6ee70b7379652e5487f (diff)
node_modules
Diffstat (limited to 'node_modules/es5-ext/function/#/compose.js')
-rw-r--r--node_modules/es5-ext/function/#/compose.js22
1 files changed, 22 insertions, 0 deletions
diff --git a/node_modules/es5-ext/function/#/compose.js b/node_modules/es5-ext/function/#/compose.js
new file mode 100644
index 000000000..089751783
--- /dev/null
+++ b/node_modules/es5-ext/function/#/compose.js
@@ -0,0 +1,22 @@
+"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 (argIgnored) {
+ return fns.reduce(callFn, apply.call(first, this, arguments));
+ };
+};