How can I configure perltidy to format long if statements like this:
if (
('this is an example' =~ /an.*example/ and 1 * 2 * 3 == 6) or
('hello world' =~ /world/ and 6 = 3 * 2 * 1)
) {
print "hello\n";
}
or like this
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
Edit2: The idea is to have a new line after the first (
and also the last )
to be on a new line with {
. If this is not possible, any other suggestions for better formatting will be appreciated.
The default style of perltidy is to follow the Perl Style Guide where possible. Which results in this output:
if ( ( 'this is an example' =~ /an.*example/ and 1 * 2 * 3 == 6 )
or ( 'hello world' =~ /world/ and 6 == 3 * 2 * 1 ) )
{
print "hello\n";
}
You can control the curly braces whether they're on a new line or not. You can control the tightness of the parentheses. You cannot, however, control the new lines for parentheses in code blocks.
The default style is as close as you're going to get to your desired output.
If it's obnoxiously long, one idea might be to limit the maximum length of each line with -l=n
, where n
is the maximum length of each line:
$ 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";
}
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With