1.0.2 • Published 1 year ago

nv-cli-env-paramd v1.0.2

Weekly downloads
-
License
ISC
Repository
-
Last release
1 year ago

nv-cli-env-paramd

  • generte a class for fixed-key dict
  • for test ctx syntax in nvlang

install

  • npm install nv-cli-env-paramd -g

usage

    Usage: nv_cli_env_paramd [options]
    Options:
        -c, --env_cls_name        class name, default EnvParamd
        -t, --tmp_names           temp env prop names
        -d, --data_names          env data names
        -h, --help                usage

example

           # nv_cli_env_paramd -c Env -t u v w -d id ctype dtype encd raw jsval
             

            const _un    = undefined;
            const _nu    = null;
            const _t     = true;
            const _f     = false;
            const _O     = Object;
            const _oseal  = Object.seal;
            const _A     = Array;


            const TMP_KS        = [
              "_u",
              "_v",
              "_w"
            ];
            const DATA_OFFSET    = 5 + TMP_KS.length;
            const DATA_KS       = [
              "id",
              "ctype",
              "dtype",
              "encd",
              "raw",
              "jsval"
            ];
            const TMP_KID       = {
              "_u": 5,
              "_v": 6,
              "_w": 7
            };
            const DATA_KID      = {
              "id": 8,
              "ctype": 9,
              "dtype": 10,
              "encd": 11,
              "raw": 12,
              "jsval": 13
            };


            class Env extends _A {
                constructor() {
                    super();
                    this[0] = _nu;  this[1] = _un;
                    this[2] = 0;    this[3] = 0;    this[4] =0;
                    ////
                    this[5]=_un;
                    this[6]=_un;
                    this[7]=_un;
                    ////
                    this[8]=_un;
                    this[9]=_un;
                    this[10]=_un;
                    this[11]=_un;
                    this[12]=_un;
                    this[13]=_un;
                    ////
                    _oseal(this);
                }
                ////#state
                get state_()    {return(this[0])}
                is_pending()    {this[0]===_nu}
                is_returned()   {this[0]===_t }
                is_throwed()    {this[0]===_f }
                is_settled()    {this[0]!==_nu}
                ////#rslt
                get rslt_()    {return(this[1])}
                rtrn(rslt)        {
                    this[0] = _t;
                    this[1] = rslt;
                }
                thrw(err)         {
                    this[0] = _f;
                    this[1] = err
                }
                get pair_()          {return([this[0],this[1]])}
                ////#cursor
                get i()              {return(this[2])}
                set i(n)             {this[2]=n}
                incr_i(n=1)          {this[2]=this[2]+n}
                decr_i(n=1)          {this[2]=this[2]-n}
                zero_i()             {this[2]=0}
                //
                get j()              {return(this[3])}
                set j(n)             {this[3]=n}
                incr_j(n=1)          {this[3]=this[3]+n}
                decr_j(n=1)          {this[3]=this[3]-n}
                zero_j()             {this[3]=0}
                //
                get k()              {return(this[4])}
                set k(n)             {this[4]=n}
                incr_k(n=1)          {this[4]=this[4]+n}
                decr_k(n=1)          {this[4]=this[4]-n}
                zero_k()             {this[4]=0}
                get cursor_dict_()   {return({i:this[2],j:this[3],k:this[4]})}
                get cursor_ary_()    {return([this[2],this[3],this[4]])}
                ////# tmp lex var
                get _u()     {return(this[5])}
                set _u(v)    {this[5]=v}
                get _v()     {return(this[6])}
                set _v(v)    {this[6]=v}
                get _w()     {return(this[7])}
                set _w(v)    {this[7]=v}
                ////
                get tmp_dict_()     {
                    let d = {}
                    for(let i=0;i<TMP_KS.length;i++) {
                       let key = TMP_KS[i];
                       d[key]  = this[5+i]
                    }
                }
                get tmp_ary_()      {
                    return(this.slice(5,5+TMP_KS.length))
                }
                ////
                get id()     {return(this[8])}
                set id(v)    {this[8]=v}
                get ctype()     {return(this[9])}
                set ctype(v)    {this[9]=v}
                get dtype()     {return(this[10])}
                set dtype(v)    {this[10]=v}
                get encd()     {return(this[11])}
                set encd(v)    {this[11]=v}
                get raw()     {return(this[12])}
                set raw(v)    {this[12]=v}
                get jsval()     {return(this[13])}
                set jsval(v)    {this[13]=v}
                ////
                get data_dict_() {
                    let d = {} 
                    for(let i=0;i<DATA_KS.length;i++) {
                       let key = DATA_KS[i];
                       d[key]  = this[DATA_OFFSET+i] 
                    }
                    return(d)
                }
                get data_ary_() {
                    return(this.slice(DATA_OFFSET))
                }
                data_dict_some(kary) {
                    let d = {}
                    for(let key of kary) {
                       if(DATA_KID.hasOwnProperty(key)) {
                          d[key] = this[key]
                       } else {
                       }
                    }
                    return(d)
                }
                data_dict_some_not(kary) {
                    let d = {}
                    for(let key in DATA_KID) {
                       if(kary.includes(key)) {
                          d[key] = this[key]
                       } else {
                       }
                    }
                    return(d)
                }
                data_ary_some(kary) {
                    let arr = []
                    for(let key of kary) {
                       if(DATA_KID.hasOwnProperty(key)) {
                          arr.push(this[key])
                       } else {
                       }
                    }
                    return(arr)
                }
                data_ary_some_not(kary) {
                    let arr = {}
                    for(let key in DATA_KID) {
                       if(kary.includes(key)) {
                          arr.push(this[key])
                       } else {
                       }
                    }
                    return(arr)
                }
                reset() {
                    this[0]=_nu;
                    this[1]=_un;
                    for(let i=2;i<5;i++)                       {this[i]=0}
                    for(let i=5;i<5+this.length;i++)           {this[i]=_un}
                }
            }

            const creat = (initd={})=>{
                let env = new Env();
                for(let key in initd) {
                  if(DATA_KID.hasOwnProperty(key)) {
                     this[key] = initd[key]
                  } else {}
                }
                return(env)
            }

            module.exports = creat;

METHODS

> env.

//fixed methods
env.reset                 env.rtrn                env.thrw
env.state_                env.rslt_               env.pair_  [true,rslt] | [false,err] | [null,undefined]
env.is_pending
env.is_returned
env.is_throwed
env.is_settled

//three fixed cursor
env.i  env.decr_i                env.incr_i     env.zero_i          
env.j  env.incr_j                env.incr_j     env.zero_j
env.k  env.incr_k                env.decr_k     env.zero_k
env.cursor_ary_           env.cursor_dict_





//temp 
env._u                    env._v                    env._w
env.tmp_ary_              env.tmp_dict_

//data
env.id   env.ctype  env.dtype env.encd env.jsval  env.raw
env.data_ary_             env.data_dict_
env.data_ary_some         env.data_ary_some_not
env.data_dict_some        env.data_dict_some_not

EXAMPLE

        > env
        Env(14) [
          null,      undefined,
          0,         0,
          0,         undefined,
          undefined, undefined,
          undefined, undefined,
          undefined, undefined,
          undefined, undefined
        ]
        > env.id = "000000000"
        '000000000'
        > env.ctype = "br"
        'br'
        > env.dtype = 'dict'
        > env.encd = "jsn"
        'jsn'
        > env.raw = `{"a":100}`
        '{"a":100}'
        > env.jsval = {a:100}
        { a: 100 }
        > env
        Env(14) [
          null,        undefined,
          0,           0,
          0,           undefined,
          undefined,   undefined,
          '000000000', 'br',
          'dict',   'jsn',
          '{"a":100}', { a: 100 }
        ]

        > env.data_dict_
        {
          id: '000000000',
          ctype: 'br',
          dtype: undefined,
          encd: 'kvntree',
          raw: '{"a":100}',
          jsval: { a: 100 }
        }
        > env.data_dict_some(["ctype","jsval"])
        { ctype: 'br', jsval: { a: 100 } }
        >

LICENSE

  • ISC