1.0.0 • Published 3 years ago
nv-facutil-simple-param v1.0.0
nv-facutil-simple-param
- nv-facutil-simple-param
- simple util to wrap/change params-sequence
- util for handle function params
- its a simplified-version of nv-facutil-curry AND nv-facutil-param
- manually add params_desc,NOT auto
- no need to parse to src-code
install
- npm install nv-facutil-simple-param
usage
pary
['a','b','c',{'d':300},'e',['args']];
- string means a normal-param name
- dict means a param-with-default
{ param-name : default-value }
- array means a spread-params
[
param-name,
/*max_count@optional@default(Inifinity) */
]
example
const x = require("nv-facutil-simple-param");
wrap
const tmoutp = require('timers/promises').setTimeout;
var pary = ['a','b','c',{'d':300},'e',['args']];
var func = async function(a,b,c,d=300,e,...args) {
args.push(a);
let r = await tmoutp(2000/*delay*/,args);
args.push(d);
r = await tmoutp(2000/*delay*/,args);
r.push(e);
return(r)
}
await func('A','B','C',undefined,'E',1,2,3,4,5)
/*
[
1, 2, 3, 4,
5, 'A',300, 'E'
]
*/
add param desc to original-function
var pary = ['a','b','c',{'d':300},'e',['args']];
x.add_param_descs(func,pary)
/*
> func
[AsyncFunction: func] {
___PARAM_DESCS___: {
a: 0,
b: 1,
c: 2,
d: [Number (_WithDfltIdx): 3] { dflt: 300 },
e: 4,
args: [Number (_SpreadIdx): 5] { count: Infinity }
}
}
>
*/
creat-new-function with different param-order
var nparam_names = ['e','a','args']
var nfunc = x.wrap(func,nparam_names)
/*
> nfunc
[Function: func] {
___PARAM_REFS___: {
orig: { a: 0, e: 4, args: [_SpreadIdx] },
curr: [ 'e', 'a', 'args' ]
}
}
>
*/
await nfunc('E','A',1,2,3,4,5)
/*
[
1, 2, 3, 4,
5, 'A', 300, 'E'
]
*/
parse unparse
var pary = ['a','b','c',{'d':300},'e',['args']];
var param_descs = x.parse(pary);
/*
> param_descs
{
a: 0,
b: 1,
c: 2,
d: [Number (_WithDfltIdx): 3] { dflt: 300 },
e: 4,
args: [Number (_SpreadIdx): 5] { count: Infinity }
}
>
*/
/*
> x.list_names_with_param_descs(param_descs)
[ 'a', 'b', 'c', 'd', 'e', 'args' ]
>
*/
/*
> x.get_idx_with_param_descs(param_descs,'d')
3
>
*/
/*
> x.init_args_ary_from_param_descs(param_descs)
[
undefined,
undefined,
undefined,
300,
undefined,
_Spread(0) [ count: Infinity ]
]
>
*/
/*
> x.unparse(param_descs)
[ 'a', 'b', 'c', { d: 300 }, 'e', [ 'args' ] ]
>
*/
fmt
var pary = ['a','b','c',{'d':300},'e',['args']];
var param_dict = {
a:10,
e:30,
d:20,
args:[1,2,3,4,5]
}
var args_ary = x.fmt_new_args_from_dict(pary,param_dict)
> args_ary
[ 10, undefined, undefined, 20, 30, 1, 2, 3, 4, 5 ]
>
from spread
> var pary = ['a','b','c',{'d':300},'e',['args']];
> var new_param_names = ['a','e','args']
> var args_ary = x.fmt_new_args_from_spread(pary,new_param_names,10,30,1,2,3,4,5)
> args_ary
[ 10, undefined, undefined, 300, 30, 1, 2, 3, 4, 5 ]
>
API
LICENSE
- ISC
1.0.0
3 years ago