gpt4 book ai didi

perl - 配置 Perl::Tidy 来处理自定义关键字

转载 作者:行者123 更新时间:2023-12-04 02:17:16 24 4
gpt4 key购买 nike

有没有简单的方法来配置 Perl::Tidy 以便正确处理使用 Devel::Declare 创建的自定义关键字?

具体来说,我正在使用 Sub::Curried ,它创建了一个关键字 curry或多或少像 sub在 5.20 中具有方法签名,但具有柯里化(Currying)功能:

curry add ($x, $y) {
return $x + $y;
}

请注意, ;不是必需的, Perl::Tidy不知道,因为它给出了:
curry add( $x, $y ) {
return $x + $y;
}

使用更长的子程序,无论有没有 ;,情况都会变得更糟。 :
curry add( $x, $y ) {
my $z = $x + $y;
return $z;
};

我想告诉 Perl::Tidy治疗 curry完全一样 sub应该不是不可能的。或者,有没有办法至少让它忽略那些它不理解的部分并仍然整理文件的其余部分?

最佳答案

我知道如何做到这一点的唯一方法是手册页中的以下内容:

跳过选定的代码部分

选定的代码行可以逐字传递到输出,无需任何格式。此功能默认启用,但可以使用 --noformat-skipping 或 -nfs 标志禁用。应该谨慎使用它以避免在代码中乱扔标记,但它可能有助于解决偶尔出现的问题。例如,它可能有助于保持旧注释代码的缩进不变,保持对齐注释的长 block 的缩进不变,保持某些列表格式不变,或者解决 perltidy 中的故障。

-fs, --format-skipping

默认情况下启用此标志,导致特殊开始和结束注释标记之间的任何代码被传递到输出而不进行格式化。默认开始标记是#<<<,默认结束标记是#>>>,但它们可能会更改(请参阅下面的下一项)。附加文本可能会出现在这些特殊注释行上,前提是它与标记至少相隔一个空格。例如
 #<<<  do not let perltidy touch this
my @list = (1,
1, 1,
1, 2, 1,
1, 3, 3, 1,
1, 4, 6, 4, 1,);
#>>>

注释标记可以放置在 block 注释可能出现的任何位置。如果它们似乎不起作用,请使用 -log 标志并检查 .LOG 文件。使用 -nfs 禁用此功能。

因此,在您的情况下,代码如下:
#<<<
curry add ($x, $y) {
return $x + $y;
}
#>>>

更新

我意识到你可能想要设置 custom特殊的注释标记,包括以下内容:
-fsb=string, --format-skipping-begin=string

-fsb=string 参数可用于更改格式跳过的开始标记。默认等效于 -fsb='#<<<'。您输入的字符串必须以 # 开头,并且应该根据需要放在引号中以通过系统的命令 shell。它实际上是通过附加 '\s' 构造的模式的前导文本,因此您还必须包括反斜杠,以便字符按字面意思而不是作为模式。

一些示例显示示例字符串如何成为模式:
 -fsb='#\{\{\{' becomes /^#\{\{\{\s/  which matches  #{{{ but not #{{{{
-fsb='#\*\*' becomes /^#\*\*\s/ which matches #** but not #***
-fsb='#\*{2,}' becomes /^#\*{2,}\s/ which matches #** and #*****

然后您需要设置结束的特殊注释字符串:
-fse=string, --format-skipping-end=string

-fsb=string 是用于更改格式跳过的结束标记的相应参数。默认等效于 -fse='#<<<'。

备注 特殊的注释字符串必须是注释,所以它们总是必须以 # 开头

关于perl - 配置 Perl::Tidy 来处理自定义关键字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23835730/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com