Renommer des variables

Je vais passer pour un maniaque, mais quand on est habitué à une nomenclature, il n’est pas évident de lire le code d’autrui écrit autrement. Et remplacer les variables une par une, c’est long…
Cette méthode sert à rechercher remplacer des variables dans du code.
<code 4D>
//DOA_codeVarRename (code_t;$arrFind_p;$arrReplace_p) -> txt
//renomme les variables du code_t
//selon les tableaux rechercher/remplacer $2/$3
//$0 : code modifié
//$4 : optionnel, variables trouvées (pour constituer le rechercher/remplacer)
C_TEXTE($1;$code_t)
C_POINTEUR($2;$3)
C_POINTEUR($4)
C_ENTIER LONG($start_l;$pos_l;$len_l)
//_
ASSERT(Nombre de paramètres>2)
ASSERT(Ptr_isArray ($2;Est un tableau texte))
ASSERT(Ptr_isArray ($3;Est un tableau texte))
$code_t:=$1
COPIER TABLEAU($2->;$find_at)
COPIER TABLEAU($3->;$replace_at)

$rxLocale_t:="\$\w{1,31}"
$rxParam_t:="\$\{?\d{1,3}\}?"

TABLEAU TEXTE($ligne_at;0)
Str_explode (->$ligne_at;$code_t;"\r")
TABLEAU TEXTE($found_at;0)
Boucle ($i_l;1;Taille tableau($ligne_at))
$ligne_t:=$ligne_at{$i_l}
Au cas ou
: (Position("//";$ligne_t)=1)
//comment
Sinon
$start_l:=1
$maxLen_l:=Longueur($ligne_t)+1
Tant que (Trouver regex($rxLocale_t;$ligne_t;$start_l;$pos_l;$len_l))
$var_t:=Sous chaîne($ligne_t;$pos_l;$len_l)
$start_l:=$pos_l+$len_l
Si (Non(Trouver regex($rxParam_t;$var_t;1))) //not a parameter
Si (Chercher dans tableau($found_at;$var_t)<1)
AJOUTER À TABLEAU($found_at;$var_t)
Fin de si
$j_l:=Chercher dans tableau($find_at;$var_t)
Si ($j_l>0)
$ligne_t:=Supprimer chaîne($ligne_t;$pos_l;$len_l)
$ligne_t:=Insérer chaîne($ligne_t;$replace_at{$j_l};$pos_l)
$maxLen_l:=Longueur($ligne_t)+1
Fin de si
Fin de si
Si ($start_l>$maxLen_l) //saleté de bug…
$start_l:=$maxLen_l
Fin de si
Fin tant que
$ligne_at{$i_l}:=$ligne_t
Fin de cas
Fin de boucle
Si (Nombre de paramètres>3)
ASSERT(Ptr_isArray ($4;Est un tableau texte))
TRIER TABLEAU($found_at;>)
COPIER TABLEAU($found_at;$4->)
Fin de si
$0:=Str_implode (->$ligne_at;"\r")
//_
</code 4D>

Salut Arnaud,

avant que Bertrand ne te reprennes, tu n’aurais pas un fichier à joindre :wink: ?

Patrick

Pour une fois que j’étais peinard coté Bertrand, il change de pneu avec une fourchette. :mrgreen:

Bon, ça ne tombe pas plus mal, j’ai corrigé un bug.
http://forums.4d.fr/4DBB_Main/x_User/4467/files/19466699.zip

Je me demande si je ne tourne pas raciste aux codes étrangers…