Voici un snippet qui permet l'utilisation d'une boucle FOR (pour) dans vos scripts.
Ceci n'est qu'une ébauche, il y a encore du travail.
Le FOR ne pourra gérer qu'une seule commande (qui devra être mise sur la même ligne que lui)
Tous les cas de figures pour une seule commande sont normalement bien gérés.
J'ai quelques problèmes pour les blocs de commandes.
Exemple :
/for (%i=1;%i<10;i++) {
<commande 1>
<commande 2>
<commande 3>
}
Si qq'un a une idée sur la manière de procéder... :)
Source / Exemple :
/*
Syntaxe : /for (initialisation>;<condition>;<modification>) /commande
Exemple d'utilisation : /for (%var=1;%var<=10;%var++) echo -a test
Ne gère pas les blocs de commande { ... }
Attention à ne mettre aucun espace entre les parenthèses du for
alias for {
var %param1, %param2, %param3, %debut, %fin, %Pas, %i, %mod, %NbIteration
$iif($regex($gettok($right($1,-1),1,59),^%\w+=-?\d+$), %param1 = 1, %param1 = 0)
$iif(($regex($gettok($1,2,59),^%\w+(<|>)=?-?\d+$)),%param2 = 1, %param2 = 0)
if ($regex($gettok($left($1,-1)$1,3,59),^%.+[^+-](-{2}|\+{2})\d*$)) {
%param3 = 1
if $regex($gettok($left($1,-1)$1,3,59),\+{2}\d*$) {
%i = $len($gettok($left($1,-1)$1,3,59))
%mod = inc
while (%i > 1 && $mid($gettok($left($1,-1)$1,3,59), %i, 1) != +) {
%Pas = $+($mid($gettok($left($1,-1)$1,3,59), %i, 1),$eval(%Pas))
dec %i
}
$iif(!%Pas, %Pas = 1)
}
elseif $regex($gettok($left($1,-1)$1,3,59),-{2}\d*$) {
%i = $len($gettok($left($1,-1)$1,3,59))
%mod = dec
while (%i > 1 && $mid($gettok($left($1,-1)$1,3,59), %i, 1) != -) {
%Pas = $+($mid($gettok($left($1,-1)$1,3,59), %i, 1),$eval(%Pas))
dec %i
}
$iif(!%Pas, %Pas = 1)
}
}
else { %param3 = 0 }
if ((%param1) && (%param2) && (%param3)) {
%debut = $gettok($gettok($right($1,-1),1,59),2,61)
if ($regex($gettok($1,2,59),^%\w+<=-?\d+$)) {
%fin = $gettok($gettok($1,2,59),2,61)
while (%debut <= %fin) {
$2-
$iif(%Mod = inc, inc %debut %Pas, dec %debut %pas)
}
}
elseif ($regex($gettok($1,2,59),^%\w+<-?\d+$)) {
%fin = $gettok($gettok($1,2,59),2,60)
while (%debut < %fin) {
$2-
$iif(%Mod = inc, inc %debut %Pas, dec %debut %pas)
}
}
elseif ($regex($gettok($1,2,59),^%\w+>-?\d+$)) {
%fin = $gettok($gettok($1,2,59),2,62)
while (%debut > %fin) {
$2-
$iif(%Mod = inc, inc %debut %Pas, dec %debut %pas)
}
}
elseif ($regex($gettok($1,2,59),^%\w+>=-?\d+$)) {
%fin = $gettok($gettok($1,2,59),2,60)
while (%debut >= %fin) {
$2-
$iif(%Mod = inc, inc %debut %Pas, dec %debut %pas)
}
}
}
else {
echo -a 4Syntaxe incorrecte
echo -a Syntaxe : /for (<initialisation>;<condition>;<modification>) /commande
echo -a Exemple : /for (%i=1;%i<=10;%i++) echo -a test
}
}
Conclusion :
J'envisage de faire un tutoriel qui expliquera pas à pas le script.
Si un bug persiste, laissez un message ici, merci.
Vous n'êtes pas encore membre ?
inscrivez-vous, c'est gratuit et ça prend moins d'une minute !
Les membres obtiennent plus de réponses que les utilisateurs anonymes.
Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.
Le fait d'être membre vous permet d'avoir des options supplémentaires.