lix-website/themes/lix/assets/bootstrap/node_modules/zwitch/readme.md

144 lines
2.9 KiB
Markdown
Raw Permalink Normal View History

2024-04-27 03:39:10 +00:00
# zwitch
[![Build][build-badge]][build]
[![Coverage][coverage-badge]][coverage]
[![Downloads][downloads-badge]][downloads]
[![Size][size-badge]][size]
Handle values based on a property.
## Install
[npm][]:
```sh
npm install zwitch
```
## Use
```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'})
```
## API
### `zwitch(key[, options])`
Create a functional switch, based on a `key` (`string`).
###### `options`
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`
###### Returns
`Function` — See [`one`][one].
#### `one(value[, rest...])`
Handle one value. Based on the bound `key`, a respective handler will be
invoked.
If `value` is not an object, or doesnt 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 its result is returned.
#### `one.handlers`
Map of [handler][]s (`Object.<string, Function>`).
#### `one.invalid`
Special [`handler`][handler] invoked if a value doesnt have a `key` property.
If not set, `undefined` is returned for invalid values.
#### `one.unknown`
Special [`handler`][handler] invoked if a value does not have a matching
handler.
If not set, `undefined` is returned for unknown values.
### `function handler(value[, rest...])`
Handle one value.
## Related
* [`mapz`](https://github.com/wooorm/mapz)
— Functional map
## License
[MIT][license] © [Titus Wormer][author]
<!-- Definitions -->
[build-badge]: https://img.shields.io/travis/wooorm/zwitch.svg
[build]: https://travis-ci.org/wooorm/zwitch
[coverage-badge]: https://img.shields.io/codecov/c/github/wooorm/zwitch.svg
[coverage]: https://codecov.io/github/wooorm/zwitch
[downloads-badge]: https://img.shields.io/npm/dm/zwitch.svg
[downloads]: https://www.npmjs.com/package/zwitch
[size-badge]: https://img.shields.io/bundlephobia/minzip/zwitch.svg
[size]: https://bundlephobia.com/result?p=zwitch
[npm]: https://docs.npmjs.com/cli/install
[license]: license
[author]: https://wooorm.com
[one]: #onevalue-rest
[handler]: #function-handlervalue-rest