据我所知,perltidy
在代码格式化方面非常方便和有用。然而,我还没有找到微调perltidy
的方法。例如,我需要格式化&&
和||
,使它们前后有两个空格。像这样:
$some && $x > 7;
我能做吗?如果是,如何?
用PPI
构建自己的整洁脚本很容易,可以在perltidy
之后运行。概念证明:
use PPI;
my $doc = PPI::Document->new($ARGV[0]);
for my $op (@{$doc->find('PPI::Token::Operator')}) {
if ($op eq '&&' || $op eq '||') {
$op->{content} = " $op ";
}
}
print $doc;
如果我们在自己身上运行这个脚本,我们会得到:
$ perl je8tidy.pl je8tidy.pl
use PPI;
my $doc = PPI::Document->new($ARGV[0]);
for my $op (@{$doc->find('PPI::Token::Operator')}) {
if ($op eq '&&' || $op eq '||') {
$op->{content} = " $op ";
}
}
print $doc;
它确实在第4行的唯一||
运算符周围插入了额外的空格。
perltidy没有在运算符前后添加两个空格的选项。
此外,如果手动添加2个空格,然后运行perltidy
,则默认情况下会将这2个空格转换为单个空格。但是,也有跳过选定代码行的选项。