2012-11-15 31 views
6

Làm thế nào tôi có thể cấu hình perltidy để định dạng lâu nếu phát biểu như thế này:perltidy định dạng phức tạp nếu

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

hoặc như

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 này: 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 

Chỉnh sửa2: Ý tưởng là có một dòng mới sau ( đầu tiên và cũng là dòng ) mới nhất để có một dòng mới với {. Nếu điều này là không thể, bất kỳ đề xuất nào khác để định dạng tốt hơn sẽ được đánh giá cao.

Trả lời

4

Kiểu mặc định của perltidy là theo dõi Perl Style Guide nếu có thể. Kết quả nào trong kết quả này:

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

Bạn có thể kiểm soát dấu ngoặc móc cho dù chúng đang ở trên một dòng mới hay không. Bạn có thể kiểm soát độ kín của dấu ngoặc đơn. Tuy nhiên, bạn không thể kiểm soát các dòng mới cho dấu ngoặc đơn trong các khối mã.

Kiểu mặc định gần như bạn sắp đạt được kết quả mong muốn.

+0

Có cách nào để thêm dấu cách trước/sau dấu ngoặc ngoài nếu câu lệnh là đa dòng không? (p.s. Tôi đã thêm perltidyrc của tôi trong đó tôi loại bỏ chúng) – bliof

+0

@ bliof, không, các tùy chọn cho các khối tạo kiểu tóc là khá hạn chế. – titanofold

2

Nếu đó là obnoxiously dài, một ý tưởng có thể là để giới hạn độ dài tối đa của mỗi dòng với -l=n, nơi n là chiều dài tối đa của mỗi dòng:

$ 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

thử

$ perltidy - bli -wba = 'hoặc' perltidy_test.pl

hoạt động cho ví dụ này ...

+0

Tôi không chắc lắm. 'Bli' indents dấu ngoặc nhọn và' wba' thêm dòng mới sau 'hoặc'. Tôi sẽ chỉnh sửa câu hỏi để chỉ định vấn đề .. – bliof

+0

** $ perltidy -anl -bbb tidy_test.pl ** :) '-anl' thêm dòng mới ' -bb'' thêm dòng trống giữa các khối chính –

Các vấn đề liên quan