2014-05-23 41 views
11

是否有直接的方式來配置Perl::Tidy,以便正確處理使用Devel::Declare創建的自定義關鍵字?配置Perl :: Tidy來處理自定義關鍵字

具體來說,我使用Sub::Curried,它創建了一個關鍵字curry的作品或多或少是在5.20 sub與方法簽名,但設施柯里:

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不應該是不可能的。或者,有沒有辦法讓它忽略那些不理解的部分,並且仍然清理文件的其餘部分?

回答

7

我知道如何做到這一點是從該名男子頁如下的唯一方法:

跳過代碼的選定部分

選擇行代碼可以被逐字傳遞到輸出沒有任何格式。此功能默認啓用,但可以使用--noformat-skipping或-nfs標誌禁用。應該謹慎使用,以避免亂拋垃圾的代碼,但它可能有助於解決偶發性問題。例如,可以保持舊的註釋代碼的縮進不變,保持長對齊註釋塊的縮進不變,保持某些列表格式不變,或者在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,); 
#>>> 

註釋標記可以放置在塊註釋可能出現的任何位置。如果它們看起來沒有工作,請使用-log標誌並檢查.LOG文件。使用-nfs禁用此功能。

所以你的情況的代碼將如下所示:

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

更新

我意識到你可能要設置custom特殊註釋標記,其覆蓋有以下幾點:

-fsb=string, --format-skipping-begin=string 

-fsb = string參數可用於更改f的開始標記ormat跳過。缺省值相當於-fsb ='#< < <'。您輸入的字符串必須以#開頭,並且必須根據需要使用引號以超越系統的命令外殼。它實際上是通過追加'\ 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 ='#< < <'。

注意特殊的註釋內容也必須是註釋,所以他們總是先從#