alias twitch.cmd.process@ {
if ( !$0 || !$regex($1-,/(@[^@\s]+@)/g ) ) { return $1- }
var %return = $1-, %tokens, %break = 25
var %regexes = /(@[^@\s]+@(?:\[("?)[^\[\]]+\2\]))/g±/(@[^@\s]+@)/g
while ( %regexes ) {
while ( $regex( %return, $gettok( %regexes, 1, 177 ) ) ) {
dec %break
if ( %break < 1 ) { echo -tgs $scriptline BREAK $1- | break }
%return = $twitch.cmd.@subprocess(%return)
}
%regexes = $deltok(%regexes,1,177)
}
return %return
}
alias twitch.cmd.@subprocess {
var %x = $regml(0), %tokens, %return = $1-
while ( %x > 0 ) {
if ( $len($regml(%x)) > 2 ) { %tokens = $addtok(%tokens,$+($regml(%x).pos,:,$regml(%x)),1) }
dec %x
}
while ( %tokens ) {
var %x = $gettok(%tokens,1,1), %var = $deltok(%x,1,58), %tokens = $deltok(%tokens,1,1), %pos = $calc( $gettok(%x,1,58) - 1 )
var %reg = $regex(%var,/^(@[^@\s]+@)(?:\[("?)([^\[\]]+)\2\])?$/), %cmd = $+(twitch.val.,$regml(1))
if ( $isalias(%cmd) ) { %cmd $iif($regml(3),$twitch.cmd.process@( $ifmatch ) ) }
else { twitch.val.catchall@ %var }
if ( $len($result) ) {
var %new = $result, %offset = $calc( %pos + $len(%var) + 1 )
var %return = $+($left(%return,%pos),%new,$mid(%return,%offset))
}
}
return %return
}
alias twitch.val.@target@ { return [ [ $+(%,target,$iif($int($1),$ifmatch)) ] ] }
alias twitch.val.@lower@ { return $lower($1-) }
alias twitch.val.@upper@ { return $upper($1-) }