Этот вопрос был задан некоторое время назад, но мне пришлось иметь дело с этим сегодня, поэтому я решил поделиться своим решением, основываясь на изменениях, внесенных в этот модуль в настоящее время. Если вы отсканируете документы 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';
Это достаточно просто. Теперь вам просто нужно, чтобы Loader обернул сгенерированный код этими маркерами. Это может выглядеть примерно так:
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 все еще (по некоторым причинам) вставлял некоторые новые строки в сгенерированный Pod. Я не совсем понял, почему это так, но отключение Pod исправляет его, и я могу жить без него.