Beefy Boxes and Bandwidth Generously Provided by pair Networks
Clear questions and runnable code
get the best and fastest answer
 
PerlMonks  

Template::Plugin::PerlTidy

by OeufMayo (Curate)
on Apr 25, 2002 at 23:31 UTC ( #162134=sourcecode: print w/ replies, xml ) Need Help??

Category: Miscellaneous
Author/Contact Info briac@cpan.org
Description: This modules is a Template Toolkit Filter for Perl::Tidy. It can be used to automatically display coloured and formatted perl code in web pages.
package Template::Plugin::PerlTidy;
use strict;
use Template::Plugin::Filter;
use Perl::Tidy;
use base qw( Template::Plugin::Filter );
use vars qw($VERSION);
$VERSION = 0.01;

use vars qw( $DYNAMIC );
$DYNAMIC = 1;

=pod

=head1 NAME

Template::Plugin::PerlTidy - Perl::Tidy filter

=head1 SYNOPSIS

 # HTML Syntax Coloring, no reformatting

 [% USE PerlTidy 'html' 'nnn' 'pre' %]
 [% FILTER $PerlTidy %]
   #!/usr/bin/perl -w
   use strict;
   my@foo=(1,2,'a',4);
   for(1,3,5){print" $_\n"}
   my     %hash =( 1=>'foo',foo=>'bar',);
 [% END %]

 # Chained filter, code reformatting and syntax coloring

 [%- USE PerlTidy -%]
 [%- FILTER $PerlTidy 'html' 'nnn' -%]
    [%- FILTER $PerlTidy i=10 -%]
       ... perl code goes here ... 
    [%- END -%]
 [%- END -%]

=head1 DESCRIPTION

This modules is a Template Toolkit Filter for Perl::Tidy. It can be us
+ed
to automatically display coloured and formatted perl code in web pages
+.

=head1 OPTIONS

All the options available in perltidy should be also available in
this plugin.

The options defined in Perl::Tidy::perltidy() are also supported
(C<stderr>, C<perltidyrc>, C<logfile>, C<errorfile>). The C<source> an
+d
<destination> options are handled by the filter.

Note that options which does not take any arguments (like -html or -pr
+e)
should be enclosed in quotes (i.e. C<[% USE PerlTidy 'html' %]>), and
options which take an argument are not enclosed in quotes (i.e. C<[% U
+SE
PerlTidy i=8 %]>).

=cut

sub filter {
    my ( $self, $text, $args, $conf ) = @_;
    $args = $self->merge_args($args);
    $conf = $self->merge_config($conf);

    my %options = %{$conf};

    my ( $stderr, $perltidyrc, $logfile, $errorfile ) =
      @options{qw( stderr perltidyrc logfile errorfile )};

    delete @options{qw( stderr perltidyrc logfile errorfile )};

    foreach my $args ( @{$args} ) {
        $options{$args} = undef unless exists $options{$args};
    }

    my $argv;
    foreach my $key ( keys %options ) {
        $argv .= $options{$key} ? qq' -$key="$options{$key}"' : " -$ke
+y";
    }

    my $formated;
    perltidy(
        source      => \$text,
        destination => \$formated,
        argv        => $argv,
        stderr      => $stderr,
        perltidyrc  => $perltidyrc,
        logfile     => $logfile,
        errorfile   => $errorfile,
    );
    return $formated;
}

1;

__END__

=pod

=head1 AUTHOR

Briac Pilpré <briac@cpan.org>

=head1 COPYRIGHT

This module is distributed under the same terms as perl itself.

=head1 SEE ALSO

Template::Plugin::Filter, Perl::Tidy

=cut

Comment on Template::Plugin::PerlTidy
Download Code

Back to Code Catacombs

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: sourcecode [id://162134]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others drinking their drinks and smoking their pipes about the Monastery: (14)
As of 2015-07-07 15:30 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    The top three priorities of my open tasks are (in descending order of likelihood to be worked on) ...









    Results (90 votes), past polls