Tengo un generador de prueba escrito en Perl. Genera pruebas que se conectan a un simulador. Estas pruebas están escritas en Perl y se conectan al simulador a través de su API. Me gustaría que el código generado sea legible por el ser humano, lo que significa que me gustaría que esté adecuadamente sangrado y formateado. ¿Hay una buena manera de hacerlo?¿Cómo puedo embellecer el código de Perl generado por Perl?
Los detalles siguen, o puede saltarse la pregunta real a continuación.
Este es un ejemplo:
my $basic = ABC
TRIGGER => DELAY(
NUM => 500,
),
)
BASIC
my $additional = STATE_IS(
STATE => DEF,
INDEX => 0,
),
ADDITIONAL
me gustaría el comando ABC
para ser ejecutado con un retraso de 500 (unidades no son relevantes en este momento) después de que llamo &event
, y el estado de índice 0 es DEF
. A veces también voy quiero esperar a que Indices de 1, 2, 3, etc ...
Para un solo índice Me gustaría ver esto en mi prueba:
&event(
CMD => ABC
TRIGGER => DELAY(
NUM => 500,
TRIGGER => STATE_IS(
STATE => DEF,
INDEX => 0,
),
),
)
Durante dos Indices de I' gustaría ver:
&event(
CMD => ABC
TRIGGER => DELAY(
NUM => 500,
TRIGGER => STATE_IS(
STATE => DEF,
INDEX => 0,
TRIGGER => STATE_IS(
STATE => DEF,
INDEX => 1,
),
),
),
)
Así que básicamente estoy añadiendo un bloque de:
TRIGGER => STATE_IS(
STATE => DEF,
INDEX => 0,
),
para cada índice, y cambia el número de índice.
Así es como lo estoy haciendo:
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
aquí está la pregunta real
El problema aquí es que el código sale mal sangría. Me gustaría correr el $basic
resultante a través de un prettifier de la siguiente manera:
&prettify($basic, "perl");
Lo cual formatearlo muy bien de acuerdo con las mejores prácticas de Perl. ¿Hay alguna buena manera de hacer esto?