2.9 KiB
zwitch
Handle values based on a property.
Install
npm:
npm install zwitch
Use
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:
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 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
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.
one.handlers
Map of handlers (Object.<string, Function>
).
one.invalid
Special handler
invoked if a value doesn’t have a key
property.
If not set, undefined
is returned for invalid values.
one.unknown
Special 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
— Functional map