alias rbkx {
if ($3 == $null) { return $1- }
set %temp $3-
set %l 1
set %r 1
if ($1 isin %temp) && ($2 isin %temp) {
while ($pos(%temp,$1,%l) > $pos(%temp,$2,%r)) {
inc %r
}
set %temp $left(%temp,$calc($pos(%temp,$1,%l)-1)) $+ $right(%temp, $calc($len(%temp) - $pos(%temp,$2,%r)))
}
return %temp
}
Something like that?
Hi, It doesn't work as intended in the new version of mirc 7.65 , can you check ? I guess it needs a little modify ,
In a channel where there are more nicks with the first letter of a nick, if you try to turn all nicks available with tab key, it writes the following nick (in the nick list) thereafter instead of propose the others nick to choose and then it applies the Style and writes a following nick if you continue to press Tab. Please fix.
$replacetok(%string,sub1, n1, token1, sub2, n2, token2, ...)
alias replacetok {
var %string $1
var %count 2
while %count < $0 {
var %replaceText [ $ $+ [ %count ] ]
inc %count
var %max $pos(%string,%replaceText, 0)
var %token $parseRange([ $ $+ [ %count ] ], %max)
inc %count
var %startTok $token(%token,1,32)
var %endTok $token(%token,2,32) + 1
var %text [ $ $+ [ %count ] ]
inc %count
var %tokensReplaced 0
while %startTok < %endTok {
var %pos $pos(%string,%replaceText,$calc(%startTok - %tokensReplaced))
var %string $+($left(%string,$calc(%pos - 1)),%text,$right(%string,- $+ $calc(%pos + $len(%replaceText) - 1)))
inc %startTok
inc %tokensReplaced
}
}
return %string
}
alias -l parserange {
var %input $1
var %maxRange $2
var %startNumber
var %endNumber
;if the first character is a -, the first parameter is a negative number; proceed to second - or end of the string
var %flag $iif($left(%input,1) == -,$true,$false)
var %b $token(%input,1,45)
var %input $iif(%flag,$right(%input,-1),%input)
var %a $pos(%input,-,1)
if %a == $len(%input) {
;second - as at end of string (range encountered) no second integer
%startNumber = $iif(%flag,$calc(%maxRange - %b + 1),%b)
%endNumber = %maxRange
}
else if !%a {
;no - after the first token; no range
%startNumber = $iif(%flag,$calc(%maxRange - %b + 1),%b)
%endNumber = %startNumber
}
else {
;range encountered; second number present
var %startNumber $iif(%flag,$calc(%maxRange - %b + 1),%b)
;proceed to first - or end of string, and if there is a positive or negative integer
var %a $iif($Pos(%input,-,1),$v1,0)
var %b $iif($pos(%input,-,2),$v1,0)
if %b > 0 && $calc(%b - %a) == 1 {
;second integer is negative,
var %endNumber $calc(%maxRange - $token(%input,2,45) + 1)
}
else if %b == 0 {
;second integer is positive
var %endnumber $token(%input,2,45)
}
else {
;unknown condition
var %endnumber $token(%input,2,45)
}
}
return %startNumber %endNumber
}