Cocorico ben geç kaldım sanırım bu challenge'a

Yine de;
Sanırım burada yapılmak istenen şey verilen modları tekrar change etmek.
Yani şöyle ki;
+vho-oq+ah-o modları,
+v+h+o-o-q+a+h-o şeklinde olmalı. Zaten ondan sonrası basit bir döngüye bakar.
İlgili text-imizi şu şekilde düşünelim(malum yazdığım kod o kısım için geçerli, zaten önemli olan kısım orası gerisi basit);
Kod:
#mS +o-o+vhh+q Toprak CoCoRiCo uFuK CesuryureK Difuzyon Feragat
İlk öncelikle buradaki modları modifiye(yukarıda gösterdim) etmek için regex-de kullanılabilir, normal bir external bir döngüde kullanılabilir. Ben regex kullanmayı tercih ettim. Şöyleki;
Regex dilimi: $regsubex(<modes>,/([+-])(\w+)/g,$regsubex(\2,/(.)/g, [[ \1\ $+ t ]] ))
Örnek: //echo -: $regsubex(a,+o-o+vhh+q,/([+-])(\w+)/g,$regsubex(\2,/(.)/g, [[ \1\ $+ t ]] ))
Sonuç: +o-o+v+h+h+q
Bundan sonrası zaten basit bir döngüye bakar. Esasında gerisi de komple regex içerisinde yazılabilir, lakin uğraşacak gibi değilim şuan .)
Neyse kodun tamamını verelim.
Kod:
alias m+ {
tokenize 32 $1-
if $1 = <- && $3 = mode {
var %s = $regsubex(a,$5,/([+-])(\w+)/g,$regsubex(\2,/(.)/g, [[ \1\ $+ t ]] ))
noop $regsubex(%s,/([+-][ahovq])/g,)
while - {
inc -u %.
echo -s $4 $regsubex(c,$$regml(%.),/([-+])([ahvoq])/g,$iif(\1 = -,,$&
$iif(\1 = +,$replace(\2,v,+,h,%,o,@,a,&,q,~)))) $+ $token($6-,%.,32)
}
}
} /debug -i on m+
Yapmanız yeterli olur.