Elixir style cond for easy javascript control flow
npm install cond-flowInspired by Elixir's cond this is a simpler alternative to lodash's _.cond

Install with npm or yarn via
``sh`
yarn add cond-flow
or
`sh`
npm i cond-flow
`js
import cond from 'cond-flow'
const value = cond([
[false, 'false'],
[true, 'true'],
[true, 'true but too late'],
])
// value === 'true'
`
Also works nicely with React components as you can have the values lazily evaluated by wrapping them in a function:
`jsx
import cond from 'cond-flow'
const Component = ({ isDisabled, isNew, isLoading }) => (
<>
{cond([
[isLoading, () =>
[isNew, () =>
[isDisabled, null],
])}
>
)
`
You can provide a default fallback which will be returned if no provided conditions are met.
`js
import cond from 'cond-flow'
const value = cond(
[
[false, () => 'false'],
[false, () => 'also false'],
],
{ default: () => 'fallback' },
)
// value === 'fallback'
`
As all predicates have to be evaluated before the right branch can be chosen, it can have a negative performance impact if you rely on heavy computations. It's best to have simple booleans and resort to Ramda's cond` for complex use cases.
If you find this useful or would like to add features, feel free to clone the repository and open a PR.