この質問は少し前に聞かれましたが、今日はこれに対処しなければならなかったので、当面このモジュールに加えられた変更に基づいて、解決策を共有したいと思いました。PerlTidyドキュメントで--format-skippingをスキャンすると、整理すべきでないコードについてPerlTidyに指示を与えることができることがわかります。開始マーカーと終了マーカーは、それぞれ#<<<と#>>>です。したがって、デフォルト設定は次のようになります。
# tidy my code
my $foo = 'bar';
#<<<
# don't tidy the code below
my $baz = 'foo';
# start to tidy again
#>>>
$foo .= 'stuff';
それは簡単です。ここで、ローダーに生成されたコードをこれらのマーカーでラップさせる必要があります。これは次のようになります。
my %args = (
components => [ 'InflateColumn::DateTime', 'TimeStamp' ],
debug => 1,
dump_directory => './lib',
filter_generated_code => sub {
my ( $type, $class, $text ) = @_;
return "#<<<\n$text#>>>";
},
generate_pod => 0,
naming => 'current',
overwrite_modifications => 0,
skip_load_external => 1,
use_moose => 1,
use_namespaces => 1,
);
make_schema_at( 'My::Schema', \%args, [$dsn, $user, $pass] );
重要な部分はfilter_generated_code
、生成されたコードをラップできるようにするです。これで、スキーマファイルを生成してもPerlTidyを実行できます。これにより、生成されたコードがmake_schema_at()以外の何かによって変更されたときに発生するエラーに遭遇することなく、生成されたファイルの下部に追加したカスタムコードを整理できます。
generate_pod
私の場合、 PerlTidyがまだ(何らかの理由で)生成されたポッドにいくつかの改行を挿入していたため、オフにすることにしました。その理由はよくわかりませんが、ポッドをオフにすると修正され、ポッドなしで生活できます。