1.0.1 • Published 2 years ago

nv-facutil-simple-enum v1.0.1

Weekly downloads
-
License
ISC
Repository
-
Last release
2 years ago

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