Perl で書かれたテスト ジェネレーターがあります。シミュレーターに接続するテストを生成します。これらのテスト自体は Perl で記述されており、API を介してシミュレーターに接続します。生成されたコードを人間が判読できるようにしたいと考えています。つまり、コードを適切にインデントしてフォーマットする必要があります。それを行う良い方法はありますか?
詳細は次のとおりです。または、以下の実際の質問にスキップできます。
これは例です:
my $basic = ABC
TRIGGER => DELAY(
NUM => 500,
),
)
BASIC
my $additional = STATE_IS(
STATE => DEF,
INDEX => 0,
),
ADDITIONAL
ABC
を呼び出した後、コマンドを 500 の遅延 (現在は単位は関係ありません) で実行したいと思います。&event
インデックス 0 の状態は ですDEF
。時々、インデックス1、2、3なども待ちたいと思うでしょう...
テストでこれを確認したいのは、1つのインデックスのみです。
&event(
CMD => ABC
TRIGGER => DELAY(
NUM => 500,
TRIGGER => STATE_IS(
STATE => DEF,
INDEX => 0,
),
),
)
私が見たい2つの指標について:
&event(
CMD => ABC
TRIGGER => DELAY(
NUM => 500,
TRIGGER => STATE_IS(
STATE => DEF,
INDEX => 0,
TRIGGER => STATE_IS(
STATE => DEF,
INDEX => 1,
),
),
),
)
基本的に、次のブロックを追加しています。
TRIGGER => STATE_IS(
STATE => DEF,
INDEX => 0,
),
インデックスごとに、インデックス番号が変わります。
これが私がやっている方法です:
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
実際の質問はこちら
ここでの問題は、コードのインデントが不十分なことです。$basic
次のようなプリティファイアを介して結果を実行したいと思います。
&prettify($basic, "perl");
これは、Perl のベスト プラクティスに従って適切にフォーマットされます。これを行う良い方法はありますか?