README
zwitch
Handle values based on a property.
Install
This package is ESM only: Node 12+ is needed to use it and it must be import
ed
instead of require
d.
npm:
npm install zwitch
Use
import {zwitch} from 'zwitch'
var handle = zwitch('type', {invalid, unknown, handlers: {alpha: handleAlpha}})
handle({type: 'alpha'})
function handleAlpha() { /* … */ }
Or, with a switch
statement:
var field = 'type'
function handle(value) {
var fn
if (!value || typeof value !== 'object' || !(field in value)) {
fn = invalid
} else {
switch (value[field]) {
case 'alpha':
fn = handleAlpha
break
default:
fn = unknown
break
}
}
return fn.apply(this, arguments)
}
handle({type: 'alpha'})
function handleAlpha() { /* … */ }
API
This package exports the following identifiers: zwitch
.
There is no default export.
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 onone.handlers
invalid
(Function
, optional) — Handle values withoutkey
, stored onone.invalid
unknown
(Function
, optional) — Handle values with an unhandledkey
, stored onone.unknown
Returns
Function
— See one
.
one(value[, rest…])
Handle one value.
Based on the bound key
, a respective handler will be called.
If value
is not an object, or doesn’t have a key
property, the special
“invalid” handler will be called.
If value
has an unknown key
, the special “unknown” handler will be called.
All arguments, and the context object, are passed through to the handler, and it’s result is returned.
one.handlers
Map of handlers (Object.<string, Function>
).
one.invalid
Special handler
called if a value doesn’t have a key
property.
If not set, undefined
is returned for invalid values.
one.unknown
Special handler
called 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
— Functional map