el-beeswarm
Version:
<div style="display: flex; padding: 1rem; flex-direction: column; align-items: center; justify-content: center; height: 100vh; text-align: center; display: flex;
144 lines (91 loc) • 3 kB
Markdown
[![Build][build-badge]][build]
[![Coverage][coverage-badge]][coverage]
[![Downloads][downloads-badge]][downloads]
[![Size][size-badge]][size]
Handle values based on a property.
[][]:
```sh
npm install zwitch
```
```js
var zwitch = require('zwitch')
var handle = zwitch('type')
handle.invalid = invalid
handle.unknown = unknown
handle.handlers.alpha = handle
handle({type: 'alpha'})
```
Or, with a `switch` statement:
```javascript
function handle(value) {
var fn
if (!value || typeof value !== 'object' || !('type' in value)) {
fn = invalid
} else {
switch (value.type) {
case 'alpha':
fn = handle
break
default:
fn = unknown
break
}
}
return fn.apply(this, arguments)
}
handle({type: 'alpha'})
```
Create a functional switch, based on a `key` (`string`).
Options can be omitted and added later to `one`.
* `handlers` (`Object.<Function>`, optional)
— Object mapping values to handle, stored on `one.handlers`
* `invalid` (`Function`, optional)
— Handle values without `key`, stored on `one.invalid`
* `unknown` (`Function`, optional)
— Handle values with an unhandled `key`, stored on `one.unknown`
`Function` — See [`one`][one].
Handle one value. Based on the bound `key`, a respective handler will be
invoked.
If `value` is not an object, or doesn’t have a `key` property, the special
“invalid” handler will be invoked.
If `value` has an unknown `key`, the special “unknown” handler will be invoked.
All arguments, and the context object, are passed through to the [handler][],
and it’s result is returned.
Map of [handler][]s (`Object.<string, Function>`).
Special [`handler`][handler] invoked if a value doesn’t have a `key` property.
If not set, `undefined` is returned for invalid values.
Special [`handler`][handler] invoked if a value does not have a matching
handler.
If not set, `undefined` is returned for unknown values.
Handle one value.
* [`mapz`](https://github.com/wooorm/mapz)
— Functional map
[][license] © [Titus Wormer][author]
<!-- Definitions -->
[]: https://img.shields.io/travis/wooorm/zwitch.svg
[]: https://travis-ci.org/wooorm/zwitch
[]: https://img.shields.io/codecov/c/github/wooorm/zwitch.svg
[]: https://codecov.io/github/wooorm/zwitch
[]: https://img.shields.io/npm/dm/zwitch.svg
[]: https://www.npmjs.com/package/zwitch
[]: https://img.shields.io/bundlephobia/minzip/zwitch.svg
[]: https://bundlephobia.com/result?p=zwitch
[]: https://docs.npmjs.com/cli/install
[]: license
[]: https://wooorm.com
[]:
[]: