cond-flow
Inspired by Elixir's cond
this is a simpler alternative to lodash's _.cond
Install
Install with npm or yarn via
yarn add cond-flow
or
npm i cond-flow
API
type Cond = (
pairs: Array<[boolean, unknown | (() => unknown)]>,
options: { strict: boolean }
) => unknown
Usage
import cond from 'cond-flow'
const value = cond([
[false, 'false'],
[true, 'true'],
[true, 'true but too late']
])
You can disable strict checking by passing options as the second argument:
import cond from 'cond-flow'
const value = cond(
[
[false, 'false'],
[1, 'truthy'],
[true, 'true but also too late']
],
{ strict: false }
)
Also works nicely with React components as you can have the values lazily evaluated by wrapping it in a function:
import cond from 'cond-flow'
const Component = ({ isDisabled, isNew, isLoading }) => (
<>
{cond([
[isLoading, () => <Loading />],
[isNew, () => <Create />],
[isDisabled, null]
])}
</>
)
Note
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 here. It's best have simple booleans and resort to _.cond
for complex use cases.
Development
If you find this useful or would like to add features, feel free to clone the repository and open a PR.