J'ai un générateur de test écrit en Perl. Il génère des tests qui se connectent à un simulateur. Ces tests sont eux-mêmes écrits en Perl et se connectent au simulateur via son API. Je voudrais que le code généré soit lisible par un humain, ce qui signifie que je voudrais qu'il soit correctement mis en retrait et formaté. Y a-t-il un bon moyen de le faire?Comment puis-je prétendre le code Perl généré par Perl?
Vous trouverez les détails ci-dessous ou vous pouvez passer à la question actuelle ci-dessous.
Voici un exemple:
my $basic = ABC
TRIGGER => DELAY(
NUM => 500,
),
)
BASIC
my $additional = STATE_IS(
STATE => DEF,
INDEX => 0,
),
ADDITIONAL
Je voudrais la commande ABC
à exécuter avec un retard de 500 (unités ne sont pas pertinentes tout à l'heure) après que j'appelle &event
, et l'état de l'indice 0 est DEF
. Parfois, je veux aussi attendre indeces 1, 2, 3 etc ...
Pour un seul indice que je voudrais voir dans mon test:
&event(
CMD => ABC
TRIGGER => DELAY(
NUM => 500,
TRIGGER => STATE_IS(
STATE => DEF,
INDEX => 0,
),
),
)
Pour deux indeces I » souhaitez voir
&event(
CMD => ABC
TRIGGER => DELAY(
NUM => 500,
TRIGGER => STATE_IS(
STATE => DEF,
INDEX => 0,
TRIGGER => STATE_IS(
STATE => DEF,
INDEX => 1,
),
),
),
)
donc, fondamentalement, j'ajoute un bloc de:
TRIGGER => STATE_IS(
STATE => DEF,
INDEX => 0,
),
pour chaque index, et les changements de numéro d'index.
Voilà comment je le fais:
for $i (0..$num_indeces) {
# update the index number
$additional =~ s/(INDEX\s*=>\s*)\d+,/$1 $i,/;
$basic =~ s/(
(\),\s*) # capture sequences of),
+ # as many as possible
\)\s* # end with) without a ,
} )/$additional $1/sx; # replace with the additional data
est ici la question réelle
Le problème ici est que le code sort mal en retrait. Je voudrais courir le $basic
résultant par un prettifier comme celui-ci:
&prettify($basic, "perl");
qui formate gentiment selon les meilleures pratiques de Perl. Y a-t-il un bon moyen de le faire?