masontidy - Tidy HTML::Mason / Mason components
version 0.01
Tidy component, write to standard output: % masontidy file.mc Process component(s) in place: % masontidy -r file1.mc [file2.mc ...]
masontidy tidies Mason 1 and Mason 2 components, using perltidy to format the Perl code that can be embedded in various places in the component. masontidy does not (yet) attempt to tidy the HTML or other non-Perl content in a component.
For example, this:
<body> %if($contents||$allow_empty) { <ul> %foreach my $line (@lines) { <li> <%2+(3-4)*6%> </li> <li><% foo($.bar,$.baz, $.bleah)%></li> %} </ul> %} </body> <%init> my @articles = @{Blog::Article::Manager->get_articles(sort_by=>"create_time",limit=>5)}; </%init>
becomes this:
<body> % if ( $contents || $allow_empty ) { <ul> % foreach my $line (@lines) { <li> <% 2 + ( 3 - 4 ) * 6 %> </li> <li><% foo( $.bar, $.baz, $.bleah) %></li> % } </ul> %} </body> <%init> my @articles = @{ Blog::Article::Manager->get_articles ( sort_by => "create_time", limit => 5 ) }; </%init>
This shows the three main categories of Perl in a component that can be tidied:
Perl blocks. <%init>, <%perl>, etc. These are tidied in isolation from one another.
<%init>
<%perl>
%-lines. These are indented relative to each other regardless of intervening non-Perl content, e.g. in the example above, the foreach is indented inside the if.
foreach
if
By default, Perl lines are indented with 2 spaces instead of the normal 4 spaces. This can be overriden with "--perltidy-line-argv".
A single space is inserted after the '%'.
Perl expressions inside <% %> and <& &> tags. A single space is inserted before and after the tidied expression if there isn't one already.
<% %>
<& &>
There are two ways to invoke masontidy:
masontidy
Specify a single file; the result will be written to standard output.
Specify one or more files with the -r/--replace flag; each file will be tidied in place.
For more advanced options, consider using masontidy with tidyall; it will let you read from standard input, write to files with a separate extension, backup files before overwriting, etc.
Modify file(s) in place instead of sending to standard output.
Number of spaces to initially indent all lines inside a block of Perl. The default is 2, e.g.
<%init> if ($foo) { $bar = 6; } </%init>
If you set this to 0, you'll get
Note that this is independent from perltidy's indentation (in this case the default, 4 spaces).
perltidy arguments to use everywhere. e.g.
perltidy
--perltidy-argv="-noll -l=78"
Additional perltidy arguments to use for Perl lines. Defaults to "-i=2" (indent 2 characters instead of the usual 4). You can pass "" (the empty string) to eliminate this exception.
Additional perltidy arguments to use for Perl blocks.
Additional perltidy arguments to use for substitution tags.
Print help message
Will throw a fatal error if a file cannot be tidied, such as when perltidy encounters bad Perl syntax. However, masontidy is not intended to be, and should not be considered, a validator; it will remain silent on many syntax errors.
You can use Mason::Tidy to use this facility from inside another Perl script/library.
A %-line or <% %> tag will never be split up into multiple lines regardless of how long it is.
<% %> tags that span multiple lines are ignored.
Blocks that begin and end on the same line are ignored.
Jonathan Swartz <swartz@pobox.com>
This software is copyright (c) 2011 by Jonathan Swartz.
This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself.
To install Mason::Tidy, copy and paste the appropriate command in to your terminal.
cpanm
cpanm Mason::Tidy
CPAN shell
perl -MCPAN -e shell install Mason::Tidy
For more information on module installation, please visit the detailed CPAN module installation guide.