nv-facutil-simple-enum
v1.0.1
Published
nv-facutil-simple-enum ======================= - simple util to create a enum-like class - to avoid using switch/case, switch/case is hard for auto-generating-code - only two method : add\_branch AND match - its a simple version of nv-facutil-switch - onl
Downloads
1
Readme
nv-facutil-simple-enum
- simple util to create a enum-like class
- to avoid using switch/case, switch/case is hard for auto-generating-code
- only two method : add_branch AND match
- its a simple version of nv-facutil-switch
- only support first-match
install
- npm install nv-facutil-simple-enum
usage
const {Enum} = require("nv-facutil-simple-enum");
example
class Blue {}
class Green {}
class Red {}
class Yellow {}
var opts = new Enum();
opts.add_branch(
Blue,
(v,branch)=> '#0000ff',
0/*likely priority default 0, if priority same, add order is the break-tie*/
);
opts.add_branch(Green, (v,branch)=> '#00ff00',1);
opts.add_branch(Red, (v,branch)=> '#ff0000',2);
opts.default_ = (v,self) => null;
/*
> opts
Enum(4) [
_Branch(4) [
[class Red],
[Function (anonymous)],
2,
[Function: DFLT_MATCHER]
],
_Branch(4) [
[class Green],
[Function (anonymous)],
1,
[Function: DFLT_MATCHER]
],
_Branch(4) [
[class Blue],
[Function (anonymous)],
0,
[Function: DFLT_MATCHER]
],
[Function (anonymous)]
]
>
*/
var B = new Blue();
var G = new Green();
var R = new Red();
> opts.match(B)
'#0000ff'
>
> opts.match(R)
'#ff0000'
>
> opts.match(G)
'#00ff00'
>
var Y = new Yellow()
> opts.match(Y)
null
>
METHODS
_Branch
branch.Cls //
branch.handler //handler = (v,branch_self) => any
branch.likely //default is 0. likely priority default 0, if priority same, add order is the break-tie
branch.matcher //matcher = (v,branch_self) => Boolean; //default is (v instanceof branch_self.Cls)
Enum
opts.add_branch (Cls,handler,likely=0,matcher=DFLT_MATCHER)=>_Branch
handler = (v,branch_self) => any
matcher = (v,branch_self) => Boolean; //default is (v instanceof branch_self.Cls)
getter/setter: opts.default_ = (v,enum_self)=>any //default return null
getter : opts.size_
opts.match(v)
APIS
- DFLT_MATCHER
- DFLT_DEFAULT_HANDLER
LICENSE
- ISC