Introducing the Perl Tidy GUI project
The perltidy script allows you to convert your Perl source code to some unified layout. The Perl::Tidy module, behind the scenes allows us to build tools like perltidy.
Let's experiment with it so we can try to build a GUI for it.
Code to be beautified
examples/perltidy0/code.pl
use strict; use warnings; my $x = "a"; my $y="b"; if($x){ print $y } if($y) { print "Hello World"; } if($y) { print "Hello World"; }
Current experiment
examples/perltidy0/tidy.pl
use strict; use warnings; use 5.010; use Perl::Tidy; use Path::Tiny qw(path); my $filename = 'code.pl'; my $code = path($filename)->slurp_utf8; my %config = ( '--indent-columns' => 4, '--maximum-line-length' => 80, '--variable-maximum-line-length' => undef, '--whitespace-cycle' => 0, ); my $clean; my $stderr; my $rc = ''; for my $field (sort keys %config) { if (defined $config{$field}) { $rc .= "$field=$config{$field}\n"; } else { $rc .= "$field\n"; } } say $rc; my $error = Perl::Tidy::perltidy( source => \$code, destination => \$clean, stderr => \$stderr, perltidyrc => \$rc, ); say $code; say '--------'; if ($error) { say 'ERROR'; say $stderr; } else { say $clean; }
Output
--indent-columns=4 --maximum-line-length=80 --variable-maximum-line-length --whitespace-cycle=0 use strict; use warnings; my $x = "a"; my $y="b"; if($x){ print $y } if($y) { print "Hello World"; } if($y) { print "Hello World"; } -------- use strict; use warnings; my $x = "a"; my $y = "b"; if ($x) { print $y } if ($y) { print "Hello World"; } if ($y) { print "Hello World"; }
Published on 2020-09-09
If you have any comments or questions, feel free to post them on the source of this page in GitHub. Source on GitHub.
Comment on this post