2012-11-15 133 views
6

我怎樣才能perltidy配置長格式,如果語句是這樣的:perltidy格式複雜

if (
    ('this is an example' =~ /an.*example/ and 1 * 2 * 3 == 6) or 
    ('hello world' =~ /world/ and 6 = 3 * 2 * 1) 
) { 
    print "hello\n"; 
} 

或類似這樣的

if (
    ('this is an example' =~ /an.*example/ and 1 * 2 * 3 == 6) 
    or ('hello world' =~ /world/ and 6 == 3 * 2 * 1) 
) { 
    print "hello\n"; 
} 

EDIT1:perltidyrc

--maximum-line-length=100 
--indent-columns=4 
--default-tabsize=4 
--continuation-indentation=4 
--closing-token-indentation=0 

--no-indent-closing-brace 

--paren-tightness=2 
--square-bracket-tightness=2 
--block-brace-tightness=0 

--trim-qw 

--nospace-terminal-semicolon 
--nospace-for-semicolon 

--indent-spaced-block-comments 
--ignore-side-comment-lengths 

--cuddled-else 

--no-opening-brace-on-new-line 
--no-opening-sub-brace-on-new-line 
--no-opening-anonymous-sub-brace-on-new-line 
--no-brace-left-and-indent 

--blanks-before-comments 
--blank-lines-before-subs=1 
--blanks-before-blocks 
--maximum-consecutive-blank-lines=1 

編輯2:想法是在第一個(之後有一個新行,並且最後一個){在一個新行中。如果這是不可能的,任何其他建議更好的格式將不勝感激。

回答

4

perltidy的默認樣式是在可能的情況下跟隨Perl Style Guide。其結果如下:

if ( ('this is an example' =~ /an.*example/ and 1 * 2 * 3 == 6) 
    or ('hello world' =~ /world/ and 6 == 3 * 2 * 1)) 
{ 
    print "hello\n"; 
} 

您可以控制花括號是否在換行。您可以控制括號的緊密程度。但是,您不能控制代碼塊中括號的新行。

默認樣式與您要達到您想要的輸出一樣接近。

+0

如果語句是多行的,是否有方法在外括號之前/之後添加空格? (p.s.我添加了我的perltidyrc,我刪除它們) – bliof

+0

@bliof,不,用於樣式塊的選項非常有限。 – titanofold

2

如果它是令人討厭長,一個想法可能是限制每條線的最大長度與-l=n,其中n是每條線的最大長度:

$ cat perltidy_test.pl 
if (
    ('this is an example' =~ /an.*example/ and 1 * 2 * 3 == 6) or('hello world' =~ /world/ and 6 = 3 * 2 * 1) 
) { 
    print "hello\n"; 
} 

$ perltidy -l=60 perltidy_test.pl 
$ cat pertidy_test.pl.tdy 
if (
    (
     'this is an example' =~ /an.*example/ 
     and 1 * 2 * 3 == 6 
    ) 
    or ('hello world' =~ /world/ and 6 == 3 * 2 * 1) 
) 
{ 
    print "hello\n"; 
} 
0

嘗試

$ perltidy - BLI -wba = '或' perltidy_test.pl

,對於這個例子工程...

+0

我不太確定。 'bli'縮進大括號,'wba'在'or'後添加新行。我將編輯問題以指定問題。 – bliof

+0

** $ perltidy -anl -bbb tidy_test.pl ** :) '-anl'添加新行 '-bbb'在主要塊之間添加空行 – 2012-11-15 17:11:02