Joshua Hoblitt > Pod-Tidy-0.10 > Pod::Tidy

Download:
Pod-Tidy-0.10.tar.gz

Dependencies

Annotate this POD

CPAN RT

Open  2
View/Report Bugs
Module Version: 0.10   Source  

NAME ^

Pod::Tidy - a reformatting Pod Processor

SYNOPSIS ^

    use Pod::Tidy qw( tidy_files tidy_filehandle );

    my $processed = Pod::Tidy::tidy_files(
        files       => \@list,
        ignore      => [qr/foo/, qr/bar/],
        recursive   => $recursive,
        verbose     => $verbose,
        inplace     => $inplace,
        nobackup    => $nobackup,
        columns     => $columns,
    );

    Pod::Tidy::tidy_filehandle($input);

DESCRIPTION ^

This module provides the heavy lifting needed by the podtidy utility although the API should be general enough that it can be used directly.

USAGE ^

Import Parameters

This module accepts no arguments to it's import method and exports no symbols.

Exportable Subroutines

Internal Subroutines

These subroutines are not exportable.

DEVELOPER NOTES ^

Efficiency concerns

The tidy_files() subroutine does a number of highly inefficient things. Each file is opened and closed at least 3 different times as it is passed through a number of different modules to see if it meets the processing criteria. This shouldn't be a major performance issue with an modern OS's VM subsystem but it still leaves much to be desired. When doing inplace file reformatting a complete copy of the original file and the updated file and held in memory for comparison. Thus you are limited to reformatting Pod documents < ( available_system_memory / 2 ).

GOTCHAS ^

Pod files not identified

Due to a bug in the version of "contains_pod" in Pod::Find bundled with Pod::Parser 1.33, Pod containing files will not be detected if the only =[foo]N directive is on the first line of the file. For example:

    =head1 foo
    
    foobarbaz

    =cut

Would not be detected unless there was a newline before =head1 foo. See CPAN bug #14871 for a patch to correct Pod::Find. This should be fixed in version 1.34 of Pod::Parser

Mangled verbatim blocks

Unfortunately, the perldoc utility doesn't follow perlpodspec for what it considers a verbatim block. As far as perldoc is concerned, any line that begins with whitespace is in a verbatim block. While the Pod spec requires that all blocks are separated by a blank line.

Consider this example:

    =head1 What Would Brian Boitano Do?

    What would Brian Boitano do
    If he was here right now?
    He'd make a plan and he'd follow through
    That's what Brian Boitano'd do
        When Brian Boitano was in the olympics
        Skating for the gold
        He'd do sound cows and a triple relux
        wearin a blindfold

    =cut

perldoc incorrectly considers the second paragraph to be indented and would display it as one might be expecting. However, podtidy would turn it into this:

    =head1 What Would Brian Boitano Do?

    What would Brian Boitano do If he was here right now?  He'd make a plan and
    he'd follow through That's what Brian Boitano'd do     When Brian Boitano was
    in the olympics     Skating for the gold     He'd do sound cows and a triple
    relux     wearin a blindfold

    =cut

If a single blank line is added between the two paragraphs as required by perlpodspec, the original document would look like this:

    =head1 What Would Brian Boitano Do?

    What would Brian Boitano do
    If he was here right now?
    He'd make a plan and he'd follow through
    That's what Brian Boitano'd do

        When Brian Boitano was in the olympics
        Skating for the gold
        He'd do sound cows and a triple relux
        wearin a blindfold

    =cut

Then the result from podtidy would be nice and... well... tidy.

    =head1 What Would Brian Boitano Do?

    What would Brian Boitano do If he was here right now? He'd make a plan and he'd
    follow through That's what Brian Boitano'd do

        When Brian Boitano was in the olympics
        Skating for the gold
        He'd do sound cows and a triple relux
        wearin a blindfold

    =cut

CREDITS ^

Larry Denneau denneau@ifa.hawaii.edu reported test failures caused by Module::Build stripping the execute bit from scripts/podtidy.

Grant McLean grant@mclean.net.nz caught a grammatical error in the documentation.

Michael Cartmell Michael.Cartmell@thomson.com provided some grammatical corrections and a patch to fix Pod::Tidy::build_pod_queue() tests on Win32, reporting test failures on Win32 caused by differing newline encodings, and reporting CPANPLUS playing badly with Module::Build's build_requires.

Hanno Hecker <vetinari@ankh-morp.org> provided a patch to allow the column width to specified in both the Pod::Tidy library and podtidy utility.

SUPPORT ^

Please contact the author directly via e-mail.

AUTHOR ^

Joshua Hoblitt jhoblitt@cpan.org

COPYRIGHT ^

Copyright (c) 2005 Joshua Hoblitt. All rights reserved. This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself.

The full text of the licenses can be found in the LICENSE file included with this module, or in perlartistic and perlgpl Pods as supplied with Perl 5.8.1 and later.

SEE ALSO ^

podtidy, Pod::Wrap::Pretty, podwrap, Pod::Wrap, Perl::Tidy

syntax highlighting: