Need private packages and team management tools?Check out npm Teams »

cond-flow

0.1.0 • Public • Published

cond-flow

Inspired by Elixir's cond this is a simpler alternative to lodash's _.cond

CI status code style: prettier JavaScript Style Guide tested with jest

Install

Install with npm or yarn via

yarn add cond-flow

or

npm i cond-flow

API

type Cond = (
  pairsArray<[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']
])
 
// value === 'true'

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 }
)
 
// value === 'truthy'

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.

Install

npm i cond-flow

DownloadsWeekly Downloads

17

Version

0.1.0

License

ISC

Unpacked Size

179 kB

Total Files

8

Last publish

Collaborators

  • avatar