2012-11-15 11 views
6

Jak mogę skonfigurować perltidy formatować długo if takie jak ten:skomplikowane formatowanie perltidy jeśli

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

lub podobnych

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 

Edycja2: Chodzi o to, aby nowy wiersz po pierwszym (, a także ostatni ) znalazł się w nowej linii z {. Jeśli nie jest to możliwe, wszelkie inne sugestie dotyczące lepszego formatowania zostaną docenione.

Odpowiedz

4

Domyślny styl perltidy to śledzenie Perl Style Guide, o ile to możliwe. Wynik tej operacji:

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

Możesz kontrolować nawiasy klamrowe niezależnie od tego, czy są w nowej linii, czy nie. Możesz kontrolować szczelność nawiasów. Nie można jednak kontrolować nowych wierszy dla nawiasów w blokach kodu.

Domyślny styl jest tak blisko, jak zamierzamy uzyskać pożądany wynik.

+0

Czy istnieje sposób dodawania spacji przed/po nawiasach zewnętrznych, jeśli instrukcja jest wielowierszowa? (p.s. Dodałem mój perltidyrc, w którym je usuwam) – bliof

+0

@bliof, nie, opcje blokowania stylów są dość ograniczone. – titanofold

2

Jeśli to obrzydliwie długi, jeden pomysł może być ograniczyć maksymalną długość każdej linii z -l=n, gdzie n jest maksymalna długość każdej linii:

$ 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

spróbować

$ perltidy - bli -wba = 'lub' perltidy_test.pl

że pracuje dla tego przykładu ...

+0

Nie jestem tego taki pewien. 'Bli' wcina nawiasy klamrowe i' wba' dodaje nową linię za 'lub'. Będę edytować pytanie, aby określić problem .. – bliof

+0

** $ perltidy -anl -bbb tidy_test.pl ** :) '-anl' dodaj nowe linie ' -bbb' dodaj pustą linię między dużymi blokami –