如何使用perltty格式化布尔运算符?

p1tboqfb  于 2022-11-15  发布在  Perl
关注(0)|答案(2)|浏览(155)

据我所知,perltidy在代码格式化方面非常方便和有用。但是,我还没有找到一种方法来微调perltidy。例如,我需要格式化&&||,使它们前后有两个空格。如下所示:
$some && $x > 7;
我能做到吗?如果可以,怎么做?

hyrbngr7

hyrbngr71#

使用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行唯一的||运算符周围插入了额外的空格。

2vuwiymt

2vuwiymt2#

perltidy没有在运算符前后添加两个空格的选项。
此外,如果手动添加2个空格,然后运行perltidy,默认情况下会将这2个空格转换为一个空格。

相关问题