How to pass a dynamic set of parameters to alias - 11/05/21 03:32 PM
//noop $example(this,is,a,test,this2,is2,a2,test2)
Code
alias example { ;inputs: ;any number of inputs / 4 var %astart $iif($hget(MAKETOK, COUNT),$v1,0) maketok MAKETOK V MAKETOKTEST maketok MAKETOK V $str(TEST., $floor($calc($0 / 4))) var %aend $iif($hget(MAKETOK, COUNT),$v1,0) var %bstart $iif($hget(MAKETOK, COUNT),$v1,0) maketok MAKETOK V OBJECT_REFERENCE var %bend $iif($hget(MAKETOK, COUNT),$v1,0) var %cstart $iif($hget(MAKETOK,COUNT),$v1,0) + 1 maketok MAKETOK V $* var %cend $iif($hget(MAKETOK,COUNT),$v1,0) return $meval(MAKETOK,%astart,%aend,%bstart,%bend,%cstart,%cend) } alias mprop { return $iif($2,$token($1,2-,46),$token($1,1,46)) } alias maketok { hinc -m $1 COUNT hadd -m $+ $iif($2 == B,b) $1 $hget($1,COUNT) $3- } alias meval { var %tokentable $1 var %astart $2 + 1 var %aend $3 var %acount $calc(%aend - %astart + 1) var %bstart $4 + 1 var %bend $5 var %bcount $calc(%bend - %bstart + 1) var %cstart $6 var %cend $$7 var %ccount $calc(%cend - %cstart + 1) var %aregex $regsubex($str(.,%acount),/(.)/g,$+($,hget,$chr(40),%tokentable,$chr(44),$calc(\n + %astart - 1),$chr(41),$chr(35))) var %bregex $regsubex($str(.,%bcount),/(.)/g,$+($,hget,$chr(40),%tokentable,$chr(44),$calc(\n + %bstart - 1),$chr(41),$chr(35))) var %cregex $regsubex($str(.,%ccount),/(.)/g,$+($,hget,$chr(40),%tokentable,$chr(44),$calc(\n + %cstart - 1),$chr(41),$chr(35))) tokenize 35 %aregex var %function [ [ $1 ] ] var %prop [ [ $2 ] ] var %regex $+($,%function,.,$mprop(%prop),$chr(40),$replace(%bregex %cregex,$chr(35),$chr(32) $chr(44) $chr(32)),$chr(41),.,$mprop(%prop,1)) return [ [ %regex ] ] } ;;;;;;;;;;;;;;;;;;;;;;;; ; END HELPER FUNCTIONS ; ;;;;;;;;;;;;;;;;;;;;;;;; alias MAKETOKTEST.TEST { var %object $1 echo -a -TEST- echo -a OBJECT: %object echo -a $+ $2 @ $3 echo -a $+ $4 @ $5 echo -a -END TEST- if $prop { var %astart $iif($hget(MAKETOK,COUNT),$v1,0) maketok MAKETOK V maketoktest maketok MAKETOK V $prop var %aend $iif($hget(MAKETOK,COUNT),$v1,0) var %bstart $iif($hget(MAKETOK,COUNT),$v1,0) maketok MAKETOK V %object var %bend $iif($hget(MAKETOK,COUNT),$v1,0) var %cstart $iif($hget(MAKETOK,COUNT),$v1,0) + 6 maketok MAKETOK V $* var %cend $iif($hget(MAKETOK,COUNT),$v1,0) echo -a TOKEN-COUNT $0 : A-START: %astart A-END: %aend B-START: %bstart B-END: %bend C-START: %cstart CEND: %cend return $meval(MAKETOK,%astart,%aend,%bstart,%bend,%cstart,%cend) } if ($hget(MAKETOK)) hfree MAKETOK } ;;;;;;;;;;;;;;;;;;;;;; ; END TEST FUNCTIONS ; ;;;;;;;;;;;;;;;;;;;;;;