I wrote previously about the inability of perltidy to handle the method keyword of Method::Signatures::Simple. Now, Steve Hancock has graciously accepted my patches in the latest Perl::Tidy, including prefilter and postfilter options. This allows me to easily add method support:
Perl::Tidy::perltidy(
...,
prefilter => sub {
$_ = $_[0];
s/^method (.*)/sub $1 #__METHOD/gm;
return $_;
},
postfilter => sub {
$_ = $_[0];
s/^sub (.*?)s* #__METHOD/method $1/gm;
return $_;
}
);
- The prefilter code substitutes
methodforsub, and adds a comment
so we’ll be able to find and convert these back afterwards. - When perltidy operates on the code, it will just see regular
subs and treat them accordingly. - The postfilter code converts the
subback tomethodwherever the special comment appears.
I put this in my private Perl::Tidy subclass, along with other tweaks, such as telling perltidy to leave my Moose ‘has’ lines alone (I prefer them to always be on one line).
Then I create my own perltidy script which uses this subclass:
#!/usr/local/bin/perl package main; use JS::Perl::Tidy; JS::Perl::Tidy::perltidy();
A little messy, but it works. I’m a devoted perltidy user, with enforced perltidy-on-commit policy on every project, so I’m glad I don’t have to choose between perltidy and my favorite Perl tweaks.