functional_utils
v0.0.2
Published
Set of useful functions to fester development
Downloads
3
Readme
Functional programming utils
This lib provides some utility functions that can be useful while writing code in node.js Basic test for usage of this module.
const Utils = require('@nodeart/functional_utils'),
assert = require('assert');
//curry test
const curried = Utils.curry((...args) => args.length, 0, 1, 2, 3, 4);
assert.equal(curried(5, 6, 7, 8, 9), 10, 'Curry test done');
//pipe test
const piped = Utils.pipe(d => d * 2, d => d * 3, d => d * 4, d => d * 5);
assert.equal(piped(2), 240, 'Pipe test done');
//asyncPipe test
const asyncPiped = Utils.asyncPipe(
res => assert.equal(res, 240, 'AsyncPipe test done'),
(d, cb) => setTimeout(() => cb(d * 2), 500),
(d, cb) => setTimeout(() => cb(d * 3), 500),
(d, cb) => setTimeout(() => cb(d * 4), 500),
(d, cb) => setTimeout(() => cb(d * 5), 500)
);
asyncPiped(2);
//compose test
const composed = Utils.compose(d => d / 5, d => d / 4, d => d / 3, d => d / 2);
assert.equal(composed(240), 2, 'Compose test done');
//asyncCompose test
const asyncComposed = Utils.asyncCompose(
res => assert.equal(res, 2, 'AsyncComposed test done'),
(d, cb) => setTimeout(() => cb(d / 5), 500),
(d, cb) => setTimeout(() => cb(d / 4), 500),
(d, cb) => setTimeout(() => cb(d / 3), 500),
(d, cb) => setTimeout(() => cb(d / 2), 500)
);
asyncComposed(240);