lhl 6ff0e96ad3 8-4-1 | 1 年之前 | |
---|---|---|
.. | ||
index.js | 1 年之前 | |
license | 1 年之前 | |
package.json | 1 年之前 | |
readme.md | 1 年之前 |
Handle values based on a property.
npm:
npm install zwitch
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'})
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
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.
mapz
— Functional map