phunctional
Version:
"Almost" functional programming utils methods
98 lines (56 loc) • 2.53 kB
Markdown
<h1 align="center">
<img style="max-width: 400px;" src="https://github.com/LasaleFamine/phunctional/blob/master/phunctional.png?raw=true" alt="phunctional"/>
</h1>
[](https://github.com/LasaleFamine/phunctional)
[](https://travis-ci.org/LasaleFamine/phunctional) [](https://codecov.io/gh/LasaleFamine/phunctional?branch=master) [](https://github.com/LasaleFamine/phunctional)
> "Almost" functional programming (typed for TypeScript) utils methods
## Why
Wrapping all the methods I usually put within a `functional.js` file inside my projects, as node module. BTW this is a nice way to make mistake and learn more about functional programming.
## Install
```
$ yarn add phunctional
```
## Usage
The library can be used both with normal JavaScript and TypeScript.
```js
const {switchcase} = require('phunctional');
const awesomeSwitch = {
aCondition: 'some value',
anotherCondition: 'some other value'
};
const res = switchcase(awesomeSwitch)('a default value')('aCondition');
console.log(res);
// => some value
```
## Methods
### switchcase
> Simple `switch` but composable with object literals. It also can run a function.
`Object -> Any -> String`
<details><summary><b>expand</b></summary><p>
- `Object`: object of `cases` to analyze
- `Any`: default case as anything you need
- `String`: `key` to check
</p></details>
##### return *case* | defaultCase
Returns the choosen *case* or the *defaultCase*
### map
> Classic `map` on array but without side effects.
`Function -> Array`
<details><summary><b>expand</b></summary><p>
- `Function`: function to handle the `map`
- `Array`: array of items
</p></details>
##### return [T] | []
Returns an empy array if the array passed is not valid.
### pEach
> `forEach` that returns a Promise and can also handle a delay between iterations.
`(Array, [Number]) -> Function -> Promise`
<details><summary><b>expand</b></summary><p>
- `Array`: array of items to iterate
- `Number`: delay in milliseconds to run each iteration and wait
- `Function`: function to handle the single item
</p></details>
##### return Promise
Returns a `Promise` with an array of the results of every iteration.
## License
MIT © LasaleFamine