Updated to Pod::Simple 3.11 from CPAN [perl #71004]
Jesse Vincent [Thu, 10 Dec 2009 16:44:26 +0000 (11:44 -0500)]
37 files changed:
Porting/Maintainers.pl
cpan/Pod-Simple/ChangeLog
cpan/Pod-Simple/README
cpan/Pod-Simple/lib/Pod/Simple.pm
cpan/Pod-Simple/lib/Pod/Simple.pod
cpan/Pod-Simple/lib/Pod/Simple/BlackBox.pm
cpan/Pod-Simple/lib/Pod/Simple/Checker.pm
cpan/Pod-Simple/lib/Pod/Simple/Debug.pm
cpan/Pod-Simple/lib/Pod/Simple/DumpAsText.pm
cpan/Pod-Simple/lib/Pod/Simple/DumpAsXML.pm
cpan/Pod-Simple/lib/Pod/Simple/HTML.pm
cpan/Pod-Simple/lib/Pod/Simple/HTMLBatch.pm
cpan/Pod-Simple/lib/Pod/Simple/LinkSection.pm
cpan/Pod-Simple/lib/Pod/Simple/Methody.pm
cpan/Pod-Simple/lib/Pod/Simple/Progress.pm
cpan/Pod-Simple/lib/Pod/Simple/PullParser.pm
cpan/Pod-Simple/lib/Pod/Simple/PullParserEndToken.pm
cpan/Pod-Simple/lib/Pod/Simple/PullParserStartToken.pm
cpan/Pod-Simple/lib/Pod/Simple/PullParserTextToken.pm
cpan/Pod-Simple/lib/Pod/Simple/PullParserToken.pm
cpan/Pod-Simple/lib/Pod/Simple/RTF.pm
cpan/Pod-Simple/lib/Pod/Simple/Search.pm
cpan/Pod-Simple/lib/Pod/Simple/SimpleTree.pm
cpan/Pod-Simple/lib/Pod/Simple/Subclassing.pod
cpan/Pod-Simple/lib/Pod/Simple/Text.pm
cpan/Pod-Simple/lib/Pod/Simple/TextContent.pm
cpan/Pod-Simple/lib/Pod/Simple/TiedOutFH.pm
cpan/Pod-Simple/lib/Pod/Simple/Transcode.pm
cpan/Pod-Simple/lib/Pod/Simple/TranscodeDumb.pm
cpan/Pod-Simple/lib/Pod/Simple/TranscodeSmart.pm
cpan/Pod-Simple/lib/Pod/Simple/XHTML.pm
cpan/Pod-Simple/lib/Pod/Simple/XMLOutStream.pm
cpan/Pod-Simple/t/fcodes_s.t
cpan/Pod-Simple/t/html01.t
cpan/Pod-Simple/t/htmlbat.t
cpan/Pod-Simple/t/items02.t
cpan/Pod-Simple/t/xhtml01.t

index 20ee322..a3e5e65 100755 (executable)
@@ -1290,7 +1290,7 @@ use File::Glob qw(:case);
     'Pod::Simple' =>
        {
        'MAINTAINER'    => 'arandal',
-       'DISTRIBUTION'  => 'ARANDAL/Pod-Simple-3.08.tar.gz',
+       'DISTRIBUTION'  => 'DWHEELER/Pod-Simple-3.11.tar.gz',
        'FILES'         => q[cpan/Pod-Simple],
        # XXX these two files correspond to similar ones in blead under
        # pod/, but the blead ones have newer changes, and also seem to
index 8aa779d..b6f59e8 100644 (file)
@@ -1,10 +1,53 @@
 # ChangeLog for Pod::Simple dist
 #---------------------------------------------------------------------------
 
+2009-12-09   David E. Wheeler <david@justatheory.org>
+       * Release 3.11
+
+       Restored code to HTMLBatch that allows the TOC (index) to be created
+       in batch jobs (RT #52324 from Martin J. Evans).
+
+       Added resources to META.yml, including bug tracker, license, and
+       repository.
+
+       Turned man page links into links to man.he.net in Pod::Simple::HTML
+       and Pod::Simple::XHTML output. Subclass and override
+       resolve_man_page_link() to use a different URL.
+
+       Added the resolve_pod_page_link() and resolve_man_page_link() methods
+       to Pod::Simple::XHTML to make it easier for subclasses to change the
+       URLs created for POD and man page links.
+
+       Fixed the output of entities in L<> tags by Pod::Simple::XHTML.
+
+       Fixed the output of POD links from Pod::Simple::XHTML so that the
+       section part (/foo) is turned into a proper fragment identfier (#foo)
+       in the resulting search.cpan.org link.
+
+       Pod::Simple::Text now outputs URLs for links created in the
+       L<text|URL> format. For example, L<Perl|http://perl.org> is now
+       output as "Perl <http://perl.org>" rather than just as "Perl".
+
+       Updated perlpod.pod and perlpodspec.pod to sync up with Perl core
+       (and to be released in Perl 5.12). Changes include:
+       * Removing the prohibition against L<text|href>
+       * Deprecation of L<section> and L<"section">
+       * Legalization of "=begin formatname parameter"
+
+       A couple of bug fixes in Pod::Simple::HTML from Graham Barr.
+
+       Added the do_section() method to Pod::Simple::HTML. Graham Barr.
+
+       Word-smithed the "DESCRIPTION" a bit and wrote the README.
+
+       Synced up all module version numbers to 3.11 except for
+       Pod::Simple::HTMLLegacy, which is at 5.01 and should not have its
+       version number lowered.
+
 2009-11-12   David E. Wheeler <david@justatheory.org>
-       * Release 3.10
+       * Release 3.11
 
-       Converted test files that had DOS enedings to have Unix endings
+       Converted test files that had DOS endings to have Unix endings
        (RT #50922 from Steve Hay).
 
        Skip tests on VMS where the lack of filename case preservation can
index 3be9a63..00f0c12 100644 (file)
@@ -1,7 +1,61 @@
-        Time-stamp: "2003-09-01 23:10:23 ADT"
+=head1 Pod::Simple version 3.11
 
-This is a late-beta release of Pod::Simple, the module-suite for
-parsing Pod.
+Pod::Simple is a Perl library for parsing text in the Pod ("plain old
+documentation") markup language that is typically used for writing
+documentation for Perl and for Perl modules. The Pod format is explained
+L<perlpod>; the most common formatter is called C<perldoc>.
 
-There are still some gaps in the documentation, and Pod::Simple::HTML
-isn't yet all that it should be.
+Pod formatters can use Pod::Simple to parse Pod documents and render them into
+plain text, HTML, or any number of other formats.
+
+=head2 Installation
+
+To install this module, type the following:
+
+    perl Makefile.PL
+    make
+    make test
+    make install
+
+=head2 Support
+
+Questions or discussion about POD and Pod::Simple should be sent to the
+pod-people@perl.org mail list. Send an empty email to
+pod-people-subscribe@perl.org to subscribe.
+
+This module is managed in an open GitHub repository,
+L<http://github.com/theory/pod-simple/>. Feel free to fork and contribute, or
+to clone L<git://github.com/theory/pod-simple.git> and send patches!
+
+Patches against Pod::Simple are welcome. Please send bug reports to
+<bug-pod-simple@rt.cpan.org>.
+
+=head1 copyright and Disclaimers
+
+Copyright (c) 2002 Sean M. Burke.  All rights reserved.
+
+This library is free software; you can redistribute it and/or modify it
+under the same terms as Perl itself.
+
+This program is distributed in the hope that it will be useful, but
+without any warranty; without even the implied warranty of
+merchantability or fitness for a particular purpose.
+
+=head1 Author
+
+Pod::Simple was created by Sean M. Burke <sburke@cpan.org>.
+But don't bother him, he's retired.
+
+Pod::Simple is maintained by:
+
+=over
+
+=item * Allison Randal C<allison@perl.org>
+
+=item * Hans Dieter Pearcey C<hdp@cpan.org>
+
+=item * David E. Wheeler C<dwheeler@cpan.org>
+
+=back
+
+=cut
index ae4aaff..554eb81 100644 (file)
@@ -18,7 +18,7 @@ use vars qw(
 );
 
 @ISA = ('Pod::Simple::BlackBox');
-$VERSION = '3.10';
+$VERSION = '3.11';
 
 @Known_formatting_codes = qw(I B C L E F S X Z); 
 %Known_formatting_codes = map(($_=>1), @Known_formatting_codes);
@@ -984,7 +984,7 @@ sub _treat_Ls {  # Process our dear dear friends, the L<...> sequences
   # L<text|name/"sec"> or L<text|name/sec>
   # L<text|/"sec"> or L<text|/sec> or L<text|"sec">
   # L<scheme:...>
-  # Ltext|scheme:...>
+  # L<text|scheme:...>
 
   my($self,@stack) = @_;
 
index b9e13a6..294fdba 100644 (file)
@@ -12,29 +12,24 @@ Pod::Simple - framework for parsing Pod
 Pod::Simple is a Perl library for parsing text in the Pod ("plain old
 documentation") markup language that is typically used for writing
 documentation for Perl and for Perl modules. The Pod format is explained
-in the L<perlpod|perlpod> man page; the most common formatter is called
-"perldoc".
+L<perlpod>; the most common formatter is called C<perldoc>.
 
-Pod formatters can use Pod::Simple to parse Pod documents into produce
-renderings of them in plain ASCII, in HTML, or in any number of other
-formats. Typically, such formatters will be subclasses of Pod::Simple,
-and so they will inherit its methods, like C<parse_file>.
+Pod formatters can use Pod::Simple to parse Pod documents and render them into
+plain text, HTML, or any number of other formats. Typically, such formatters
+will be subclasses of Pod::Simple, and so they will inherit its methods, like
+C<parse_file>.
 
 If you're reading this document just because you have a Pod-processing
-subclass that you want to use, this document (plus the documentation for
-the subclass) is probably all you'll need to read.
+subclass that you want to use, this document (plus the documentation for the
+subclass) is probably all you need to read.
 
 If you're reading this document because you want to write a formatter
-subclass, continue reading this document, and then read
-L<Pod::Simple::Subclassing>, and then possibly even read L<perlpodspec>
-(some of which is for parser-writers, but much of which is notes to
-formatter-writers).
-
+subclass, continue reading it and then read L<Pod::Simple::Subclassing>, and
+then possibly even read L<perlpodspec> (some of which is for parser-writers,
+but much of which is notes to formatter-writers).
 
 =head1 MAIN METHODS
 
-
-
 =over
 
 =item C<< $parser = I<SomeClass>->new(); >>
@@ -235,6 +230,18 @@ L<Pod::Escapes|Pod::Escapes>
 
 L<perldoc>
 
+=head1 SUPPORT
+
+Questions or discussion about POD and Pod::Simple should be sent to the
+pod-people@perl.org mail list. Send an empty email to
+pod-people-subscribe@perl.org to subscribe.
+
+This module is managed in an open GitHub repository,
+L<http://github.com/theory/pod-simple/>. Feel free to fork and contribute, or
+to clone L<git://github.com/theory/pod-simple.git> and send patches!
+
+Patches against Pod::Simple are welcome. Please send bug reports to
+<bug-pod-simple@rt.cpan.org>.
 
 =head1 COPYRIGHT AND DISCLAIMERS
 
@@ -249,9 +256,10 @@ merchantability or fitness for a particular purpose.
 
 =head1 AUTHOR
 
-Original author: Sean M. Burke C<sburke@cpan.org>
+Pod::Simple was created by Sean M. Burke <sburke@cpan.org>.
+But don't bother him, he's retired.
 
-Maintained by: 
+Pod::Simple is maintained by:
 
 =over
 
@@ -259,8 +267,8 @@ Maintained by:
 
 =item * Hans Dieter Pearcey C<hdp@cpan.org>
 
+=item * David E. Wheeler C<dwheeler@cpan.org>
+
 =back
 
 =cut
-
-
index 65438df..37094ad 100644 (file)
@@ -22,6 +22,8 @@ package Pod::Simple::BlackBox;
 use integer; # vroom!
 use strict;
 use Carp ();
+use vars qw($VERSION );
+$VERSION = '3.11';
 #use constant DEBUG => 7;
 BEGIN {
   require Pod::Simple;
index 0d01f50..cfaa2a8 100644 (file)
@@ -9,7 +9,7 @@ use Carp ();
 use Pod::Simple::Methody ();
 use Pod::Simple ();
 use vars qw( @ISA $VERSION );
-$VERSION = '2.02';
+$VERSION = '3.11';
 @ISA = ('Pod::Simple::Methody');
 BEGIN { *DEBUG = defined(&Pod::Simple::DEBUG)
           ? \&Pod::Simple::DEBUG
@@ -152,6 +152,19 @@ This is a subclass of L<Pod::Simple> and inherits all its methods.
 
 L<Pod::Simple>, L<Pod::Simple::Text>, L<Pod::Checker>
 
+=head1 SUPPORT
+
+Questions or discussion about POD and Pod::Simple should be sent to the
+pod-people@perl.org mail list. Send an empty email to
+pod-people-subscribe@perl.org to subscribe.
+
+This module is managed in an open GitHub repository,
+L<http://github.com/theory/pod-simple/>. Feel free to fork and contribute, or
+to clone L<git://github.com/theory/pod-simple.git> and send patches!
+
+Patches against Pod::Simple are welcome. Please send bug reports to
+<bug-pod-simple@rt.cpan.org>.
+
 =head1 COPYRIGHT AND DISCLAIMERS
 
 Copyright (c) 2002 Sean M. Burke.  All rights reserved.
@@ -165,7 +178,19 @@ merchantability or fitness for a particular purpose.
 
 =head1 AUTHOR
 
-Sean M. Burke C<sburke@cpan.org>
+Pod::Simple was created by Sean M. Burke <sburke@cpan.org>.
+But don't bother him, he's retired.
 
-=cut
+Pod::Simple is maintained by:
+
+=over
 
+=item * Allison Randal C<allison@perl.org>
+
+=item * Hans Dieter Pearcey C<hdp@cpan.org>
+
+=item * David E. Wheeler C<dwheeler@cpan.org>
+
+=back
+
+=cut
index 7747f0b..b4e4a6c 100644 (file)
@@ -2,6 +2,8 @@
 require 5;
 package Pod::Simple::Debug;
 use strict;
+use vars qw($VERSION );
+$VERSION = '3.11';
 
 sub import {
   my($value,$variable);
@@ -132,6 +134,19 @@ L<Pod::Simple>
 The article "Constants in Perl", in I<The Perl Journal> issue
 21.  See L<http://interglacial.com/tpj/21/>
 
+=head1 SUPPORT
+
+Questions or discussion about POD and Pod::Simple should be sent to the
+pod-people@perl.org mail list. Send an empty email to
+pod-people-subscribe@perl.org to subscribe.
+
+This module is managed in an open GitHub repository,
+L<http://github.com/theory/pod-simple/>. Feel free to fork and contribute, or
+to clone L<git://github.com/theory/pod-simple.git> and send patches!
+
+Patches against Pod::Simple are welcome. Please send bug reports to
+<bug-pod-simple@rt.cpan.org>.
+
 =head1 COPYRIGHT AND DISCLAIMERS
 
 Copyright (c) 2002 Sean M. Burke.  All rights reserved.
@@ -145,7 +160,19 @@ merchantability or fitness for a particular purpose.
 
 =head1 AUTHOR
 
-Sean M. Burke C<sburke@cpan.org>
+Pod::Simple was created by Sean M. Burke <sburke@cpan.org>.
+But don't bother him, he's retired.
 
-=cut
+Pod::Simple is maintained by:
+
+=over
 
+=item * Allison Randal C<allison@perl.org>
+
+=item * Hans Dieter Pearcey C<hdp@cpan.org>
+
+=item * David E. Wheeler C<dwheeler@cpan.org>
+
+=back
+
+=cut
index e678e42..fd38945 100644 (file)
@@ -1,7 +1,7 @@
 
 require 5;
 package Pod::Simple::DumpAsText;
-$VERSION = '2.02';
+$VERSION = '3.11';
 use Pod::Simple ();
 BEGIN {@ISA = ('Pod::Simple')}
 
@@ -111,6 +111,19 @@ L<Pod::Simple::DumpAsXML>
 
 L<Pod::Simple>
 
+=head1 SUPPORT
+
+Questions or discussion about POD and Pod::Simple should be sent to the
+pod-people@perl.org mail list. Send an empty email to
+pod-people-subscribe@perl.org to subscribe.
+
+This module is managed in an open GitHub repository,
+L<http://github.com/theory/pod-simple/>. Feel free to fork and contribute, or
+to clone L<git://github.com/theory/pod-simple.git> and send patches!
+
+Patches against Pod::Simple are welcome. Please send bug reports to
+<bug-pod-simple@rt.cpan.org>.
+
 =head1 COPYRIGHT AND DISCLAIMERS
 
 Copyright (c) 2002 Sean M. Burke.  All rights reserved.
@@ -124,7 +137,19 @@ merchantability or fitness for a particular purpose.
 
 =head1 AUTHOR
 
-Sean M. Burke C<sburke@cpan.org>
+Pod::Simple was created by Sean M. Burke <sburke@cpan.org>.
+But don't bother him, he's retired.
 
-=cut
+Pod::Simple is maintained by:
+
+=over
 
+=item * Allison Randal C<allison@perl.org>
+
+=item * Hans Dieter Pearcey C<hdp@cpan.org>
+
+=item * David E. Wheeler C<dwheeler@cpan.org>
+
+=back
+
+=cut
index fe0c166..792b688 100644 (file)
@@ -1,7 +1,7 @@
 
 require 5;
 package Pod::Simple::DumpAsXML;
-$VERSION = '2.02';
+$VERSION = '3.11';
 use Pod::Simple ();
 BEGIN {@ISA = ('Pod::Simple')}
 
@@ -126,6 +126,18 @@ L<Pod::Simple>, L<Pod::Simple::DumpAsXML>
 
 The older libraries L<Pod::PXML>, L<Pod::XML>, L<Pod::SAX>
 
+=head1 SUPPORT
+
+Questions or discussion about POD and Pod::Simple should be sent to the
+pod-people@perl.org mail list. Send an empty email to
+pod-people-subscribe@perl.org to subscribe.
+
+This module is managed in an open GitHub repository,
+L<http://github.com/theory/pod-simple/>. Feel free to fork and contribute, or
+to clone L<git://github.com/theory/pod-simple.git> and send patches!
+
+Patches against Pod::Simple are welcome. Please send bug reports to
+<bug-pod-simple@rt.cpan.org>.
 
 =head1 COPYRIGHT AND DISCLAIMERS
 
@@ -140,7 +152,19 @@ merchantability or fitness for a particular purpose.
 
 =head1 AUTHOR
 
-Sean M. Burke C<sburke@cpan.org>
+Pod::Simple was created by Sean M. Burke <sburke@cpan.org>.
+But don't bother him, he's retired.
 
-=cut
+Pod::Simple is maintained by:
+
+=over
 
+=item * Allison Randal C<allison@perl.org>
+
+=item * Hans Dieter Pearcey C<hdp@cpan.org>
+
+=item * David E. Wheeler C<dwheeler@cpan.org>
+
+=back
+
+=cut
index 44c5555..681cc4d 100644 (file)
@@ -5,12 +5,12 @@ use strict;
 use Pod::Simple::PullParser ();
 use vars qw(
   @ISA %Tagmap $Computerese $LamePad $Linearization_Limit $VERSION
-  $Perldoc_URL_Prefix $Perldoc_URL_Postfix
+  $Perldoc_URL_Prefix $Perldoc_URL_Postfix $Man_URL_Prefix $Man_URL_Postfix
   $Title_Prefix $Title_Postfix $HTML_EXTENSION %ToIndex
   $Doctype_decl  $Content_decl
 );
 @ISA = ('Pod::Simple::PullParser');
-$VERSION = '3.03';
+$VERSION = '3.11';
 
 use UNIVERSAL ();
 BEGIN {
@@ -37,6 +37,10 @@ $Perldoc_URL_Prefix  = 'http://search.cpan.org/perldoc?'
 $Perldoc_URL_Postfix = ''
  unless defined $Perldoc_URL_Postfix;
 
+
+$Man_URL_Prefix  = 'http://man.he.net/man';
+$Man_URL_Postfix = '';
+
 $Title_Prefix  = '' unless defined $Title_Prefix;
 $Title_Postfix = '' unless defined $Title_Postfix;
 %ToIndex = map {; $_ => 1 } qw(head1 head2 head3 head4 ); # item-text
@@ -52,6 +56,12 @@ __PACKAGE__->_accessorize(
  'perldoc_url_postfix',
    # what to put after "Foo%3a%3aBar" in the URL.  Normally "".
 
+ 'man_url_prefix',
+   # In turning L<crontab(5)> into http://whatever/man/1/crontab, what
+   #  to put before the "1/crontab".
+ 'man_url_postfix',
+   #  what to put after the "1/crontab" in the URL. Normally "".
+
  'batch_mode', # whether we're in batch mode
  'batch_mode_current_level',
     # When in batch mode, how deep the current module is: 1 for "LWP",
@@ -180,6 +190,8 @@ sub new {
 
   $new->perldoc_url_prefix(  $Perldoc_URL_Prefix  );
   $new->perldoc_url_postfix( $Perldoc_URL_Postfix );
+  $new->man_url_prefix(  $Man_URL_Prefix  );
+  $new->man_url_postfix( $Man_URL_Postfix );
   $new->title_prefix(  $Title_Prefix  );
   $new->title_postfix( $Title_Postfix );
 
@@ -408,7 +420,7 @@ sub index_as_html {
     $indent = '  '  x $level;
     push @out, sprintf
       "%s<li class='indexItem indexItem%s'><a href='#%s'>%s</a>",
-      $indent, $level, $anchorname, esc($text)
+      $indent, $level, esc($anchorname), esc($text)
     ;
   }
   push @out, "</div>\n";
@@ -457,7 +469,8 @@ sub _do_middle_main_loop {
         }
 
         my $name = $self->linearize_tokens(@to_unget);
-        
+        $name = $self->do_section($name, $token) if defined $name;
+
         print $fh "<a ";
         print $fh "class='u' href='#___top' title='click to go to top of document'\n"
          if $tagname =~ m/^head\d$/s;
@@ -487,7 +500,7 @@ sub _do_middle_main_loop {
           next;
         }
         DEBUG and print "    raw text ", $next->text, "\n";
-        printf $fh "\n" . $next->text . "\n";
+        print $fh "\n" . $next->text . "\n";
         next;
        
       } else {
@@ -536,6 +549,11 @@ sub _do_middle_main_loop {
 ###########################################################################
 #
 
+sub do_section {
+  my($self, $name, $token) = @_;
+  return $name;
+}
+
 sub do_link {
   my($self, $token) = @_;
   my $type = $token->attr('type');
@@ -554,9 +572,20 @@ sub do_link {
 
 sub do_url_link { return $_[1]->attr('to') }
 
-sub do_man_link { return undef }
- # But subclasses are welcome to override this if they have man
- #  pages somewhere URL-accessible.
+sub do_man_link {
+  my ($self, $link) = @_;
+  my $to = $link->attr('to');
+  my $frag = $link->attr('section');
+
+  return undef unless defined $to and length $to; # should never happen
+
+  $frag = $self->section_escape($frag)
+   if defined $frag and length($frag .= ''); # (stringify)
+
+  DEBUG and print "Resolving \"$to/$frag\"\n\n";
+
+  return $self->resolve_man_page_link($to, $frag);
+}
 
 
 sub do_pod_link {
@@ -646,6 +675,7 @@ sub section_name_tidy {
 
 sub section_url_escape  { shift->general_url_escape(@_) }
 sub pagepath_url_escape { shift->general_url_escape(@_) }
+sub manpage_url_escape  { shift->general_url_escape(@_) }
 
 sub general_url_escape {
   my($self, $string) = @_;
@@ -719,6 +749,18 @@ sub batch_mode_rectify_path {
   return;
 }
 
+sub resolve_man_page_link {
+  my ($self, $to, $frag) = @_;
+  my ($page, $section) = $to =~ /^([^(]+)(?:[(](\d+)[)])?$/;
+
+  return undef unless defined $page and length $page;
+  $section ||= 1;
+
+  return $self->man_url_prefix . "$section/"
+      . $self->manpage_url_escape($page)
+      . $self->man_url_postfix;
+}
+
 #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
 sub resolve_pod_link_by_table {
@@ -858,17 +900,25 @@ maybe override do_pod_link
 
 maybe override do_beginning do_end
 
-
-
 =head1 SEE ALSO
 
 L<Pod::Simple>, L<Pod::Simple::HTMLBatch>
 
-
 TODO: a corpus of sample Pod input and HTML output?  Or common
 idioms?
 
+=head1 SUPPORT
+
+Questions or discussion about POD and Pod::Simple should be sent to the
+pod-people@perl.org mail list. Send an empty email to
+pod-people-subscribe@perl.org to subscribe.
+
+This module is managed in an open GitHub repository,
+L<http://github.com/theory/pod-simple/>. Feel free to fork and contribute, or
+to clone L<git://github.com/theory/pod-simple.git> and send patches!
 
+Patches against Pod::Simple are welcome. Please send bug reports to
+<bug-pod-simple@rt.cpan.org>.
 
 =head1 COPYRIGHT AND DISCLAIMERS
 
@@ -883,7 +933,19 @@ merchantability or fitness for a particular purpose.
 
 =head1 AUTHOR
 
-Sean M. Burke C<sburke@cpan.org>
+Pod::Simple was created by Sean M. Burke <sburke@cpan.org>.
+But don't bother him, he's retired.
 
-=cut
+Pod::Simple is maintained by:
+
+=over
+
+=item * Allison Randal C<allison@perl.org>
+
+=item * Hans Dieter Pearcey C<hdp@cpan.org>
 
+=item * David E. Wheeler C<dwheeler@cpan.org>
+
+=back
+
+=cut
index 96093fb..773c8dc 100644 (file)
@@ -5,7 +5,7 @@ use strict;
 use vars qw( $VERSION $HTML_RENDER_CLASS $HTML_EXTENSION
  $CSS $JAVASCRIPT $SLEEPY $SEARCH_CLASS @ISA
 );
-$VERSION = '3.02';
+$VERSION = '3.11';
 @ISA = ();  # Yup, we're NOT a subclass of Pod::Simple::HTML!
 
 # TODO: nocontents stylesheets. Strike some of the color variations?
@@ -250,6 +250,9 @@ sub _do_one_batch_conversion {
   # Give each class a chance to init the converter:
   $page->batch_mode_page_object_init($self, $module, $infile, $outfile, $depth)
    if $page->can('batch_mode_page_object_init');
+  # Init for the index (TOC), too.
+  $self->batch_mode_page_object_init($page, $module, $infile, $outfile, $depth)
+   if $self->can('batch_mode_page_object_init');
     
   # Now get busy...
   $self->makepath($outdir => \@namelets);
@@ -1325,12 +1328,22 @@ you're looking for.
 
 L<Pod::Simple>, L<Pod::Simple::HTMLBatch>, L<perlpod>, L<perlpodspec>
 
+=head1 SUPPORT
 
+Questions or discussion about POD and Pod::Simple should be sent to the
+pod-people@perl.org mail list. Send an empty email to
+pod-people-subscribe@perl.org to subscribe.
 
+This module is managed in an open GitHub repository,
+L<http://github.com/theory/pod-simple/>. Feel free to fork and contribute, or
+to clone L<git://github.com/theory/pod-simple.git> and send patches!
+
+Patches against Pod::Simple are welcome. Please send bug reports to
+<bug-pod-simple@rt.cpan.org>.
 
 =head1 COPYRIGHT AND DISCLAIMERS
 
-Copyright (c) 2004 Sean M. Burke.  All rights reserved.
+Copyright (c) 2002 Sean M. Burke.  All rights reserved.
 
 This library is free software; you can redistribute it and/or modify it
 under the same terms as Perl itself.
@@ -1341,9 +1354,19 @@ merchantability or fitness for a particular purpose.
 
 =head1 AUTHOR
 
-Sean M. Burke C<sburke@cpan.org>
+Pod::Simple was created by Sean M. Burke <sburke@cpan.org>.
+But don't bother him, he's retired.
 
-=cut
+Pod::Simple is maintained by:
+
+=over
 
+=item * Allison Randal C<allison@perl.org>
 
+=item * Hans Dieter Pearcey C<hdp@cpan.org>
 
+=item * David E. Wheeler C<dwheeler@cpan.org>
+
+=back
+
+=cut
index 14c3ba8..9a8f902 100644 (file)
@@ -2,9 +2,13 @@
 require 5;
 package Pod::Simple::LinkSection;
   # Based somewhat dimly on Array::Autojoin
+use vars qw($VERSION );
+$VERSION = '3.11';
 
 use strict;
 use Pod::Simple::BlackBox;
+use vars qw($VERSION );
+$VERSION = '3.11';
 
 use overload( # So it'll stringify nice
   '""'   => \&Pod::Simple::BlackBox::stringify_lol,
@@ -126,9 +130,22 @@ Output:
 
 L<Pod::Simple>
 
+=head1 SUPPORT
+
+Questions or discussion about POD and Pod::Simple should be sent to the
+pod-people@perl.org mail list. Send an empty email to
+pod-people-subscribe@perl.org to subscribe.
+
+This module is managed in an open GitHub repository,
+L<http://github.com/theory/pod-simple/>. Feel free to fork and contribute, or
+to clone L<git://github.com/theory/pod-simple.git> and send patches!
+
+Patches against Pod::Simple are welcome. Please send bug reports to
+<bug-pod-simple@rt.cpan.org>.
+
 =head1 COPYRIGHT AND DISCLAIMERS
 
-Copyright (c) 2002 Sean M. Burke.  All rights reserved.
+Copyright (c) 2004 Sean M. Burke.  All rights reserved.
 
 This library is free software; you can redistribute it and/or modify it
 under the same terms as Perl itself.
@@ -139,7 +156,19 @@ merchantability or fitness for a particular purpose.
 
 =head1 AUTHOR
 
-Sean M. Burke C<sburke@cpan.org>
+Pod::Simple was created by Sean M. Burke <sburke@cpan.org>.
+But don't bother him, he's retired.
 
-=cut
+Pod::Simple is maintained by:
+
+=over
 
+=item * Allison Randal C<allison@perl.org>
+
+=item * Hans Dieter Pearcey C<hdp@cpan.org>
+
+=item * David E. Wheeler C<dwheeler@cpan.org>
+
+=back
+
+=cut
index 2ad607e..40e2352 100644 (file)
@@ -4,7 +4,7 @@ package Pod::Simple::Methody;
 use strict;
 use Pod::Simple ();
 use vars qw(@ISA $VERSION);
-$VERSION = '2.02';
+$VERSION = '3.11';
 @ISA = ('Pod::Simple');
 
 # Yes, we could use named variables, but I want this to be impose
@@ -108,6 +108,19 @@ See the source for Pod::Simple::Text for an example of using this class.
 
 L<Pod::Simple>, L<Pod::Simple::Subclassing>
 
+=head1 SUPPORT
+
+Questions or discussion about POD and Pod::Simple should be sent to the
+pod-people@perl.org mail list. Send an empty email to
+pod-people-subscribe@perl.org to subscribe.
+
+This module is managed in an open GitHub repository,
+L<http://github.com/theory/pod-simple/>. Feel free to fork and contribute, or
+to clone L<git://github.com/theory/pod-simple.git> and send patches!
+
+Patches against Pod::Simple are welcome. Please send bug reports to
+<bug-pod-simple@rt.cpan.org>.
+
 =head1 COPYRIGHT AND DISCLAIMERS
 
 Copyright (c) 2002 Sean M. Burke.  All rights reserved.
@@ -121,7 +134,19 @@ merchantability or fitness for a particular purpose.
 
 =head1 AUTHOR
 
-Sean M. Burke C<sburke@cpan.org>
+Pod::Simple was created by Sean M. Burke <sburke@cpan.org>.
+But don't bother him, he's retired.
 
-=cut
+Pod::Simple is maintained by:
+
+=over
 
+=item * Allison Randal C<allison@perl.org>
+
+=item * Hans Dieter Pearcey C<hdp@cpan.org>
+
+=item * David E. Wheeler C<dwheeler@cpan.org>
+
+=back
+
+=cut
index bc42a95..8b65f79 100644 (file)
@@ -1,7 +1,7 @@
 
 require 5;
 package Pod::Simple::Progress;
-$VERSION = "1.01";
+$VERSION = '3.11';
 use strict;
 
 # Objects of this class are used for noting progress of an
index 1a6a471..f6ae766 100644 (file)
@@ -1,7 +1,7 @@
 
 require 5;
 package Pod::Simple::PullParser;
-$VERSION = '2.02';
+$VERSION = '3.11';
 use Pod::Simple ();
 BEGIN {@ISA = ('Pod::Simple')}
 
@@ -728,6 +728,19 @@ L<Pod::Simple::PullParserEndToken>.
 
 L<HTML::TokeParser>, which inspired this.
 
+=head1 SUPPORT
+
+Questions or discussion about POD and Pod::Simple should be sent to the
+pod-people@perl.org mail list. Send an empty email to
+pod-people-subscribe@perl.org to subscribe.
+
+This module is managed in an open GitHub repository,
+L<http://github.com/theory/pod-simple/>. Feel free to fork and contribute, or
+to clone L<git://github.com/theory/pod-simple.git> and send patches!
+
+Patches against Pod::Simple are welcome. Please send bug reports to
+<bug-pod-simple@rt.cpan.org>.
+
 =head1 COPYRIGHT AND DISCLAIMERS
 
 Copyright (c) 2002 Sean M. Burke.  All rights reserved.
@@ -741,12 +754,22 @@ merchantability or fitness for a particular purpose.
 
 =head1 AUTHOR
 
-Sean M. Burke C<sburke@cpan.org>
+Pod::Simple was created by Sean M. Burke <sburke@cpan.org>.
+But don't bother him, he's retired.
 
-=cut
+Pod::Simple is maintained by:
 
+=over
 
+=item * Allison Randal C<allison@perl.org>
 
+=item * Hans Dieter Pearcey C<hdp@cpan.org>
+
+=item * David E. Wheeler C<dwheeler@cpan.org>
+
+=back
+
+=cut
 JUNK:
 
 sub _old_get_title {  # some witchery in here
index 7b219f8..f4e23a4 100644 (file)
@@ -2,8 +2,10 @@
 require 5;
 package Pod::Simple::PullParserEndToken;
 use Pod::Simple::PullParserToken ();
-@ISA = ('Pod::Simple::PullParserToken');
 use strict;
+use vars qw(@ISA $VERSION);
+@ISA = ('Pod::Simple::PullParserToken');
+$VERSION = '3.11';
 
 sub new {  # Class->new(tagname);
   my $class = shift;
@@ -74,6 +76,19 @@ Pod::Simple::PullParserEndToken->new( I<tagname> )
 
 L<Pod::Simple::PullParserToken>, L<Pod::Simple>, L<Pod::Simple::Subclassing>
 
+=head1 SUPPORT
+
+Questions or discussion about POD and Pod::Simple should be sent to the
+pod-people@perl.org mail list. Send an empty email to
+pod-people-subscribe@perl.org to subscribe.
+
+This module is managed in an open GitHub repository,
+L<http://github.com/theory/pod-simple/>. Feel free to fork and contribute, or
+to clone L<git://github.com/theory/pod-simple.git> and send patches!
+
+Patches against Pod::Simple are welcome. Please send bug reports to
+<bug-pod-simple@rt.cpan.org>.
+
 =head1 COPYRIGHT AND DISCLAIMERS
 
 Copyright (c) 2002 Sean M. Burke.  All rights reserved.
@@ -87,7 +102,19 @@ merchantability or fitness for a particular purpose.
 
 =head1 AUTHOR
 
-Sean M. Burke C<sburke@cpan.org>
+Pod::Simple was created by Sean M. Burke <sburke@cpan.org>.
+But don't bother him, he's retired.
 
-=cut
+Pod::Simple is maintained by:
 
+=over
+
+=item * Allison Randal C<allison@perl.org>
+
+=item * Hans Dieter Pearcey C<hdp@cpan.org>
+
+=item * David E. Wheeler C<dwheeler@cpan.org>
+
+=back
+
+=cut
index 9ead50d..37b6821 100644 (file)
@@ -2,8 +2,10 @@
 require 5;
 package Pod::Simple::PullParserStartToken;
 use Pod::Simple::PullParserToken ();
-@ISA = ('Pod::Simple::PullParserToken');
 use strict;
+use vars qw(@ISA $VERSION);
+@ISA = ('Pod::Simple::PullParserToken');
+$VERSION = '3.11';
 
 sub new {  # Class->new(tagname, optional_attrhash);
   my $class = shift;
@@ -111,6 +113,23 @@ Pod::Simple::PullParserStartToken->new( I<tagname>, I<attrhash> )
 
 L<Pod::Simple::PullParserToken>, L<Pod::Simple>, L<Pod::Simple::Subclassing>
 
+=head1 SEE ALSO
+
+L<Pod::Simple::PullParserToken>, L<Pod::Simple>, L<Pod::Simple::Subclassing>
+
+=head1 SUPPORT
+
+Questions or discussion about POD and Pod::Simple should be sent to the
+pod-people@perl.org mail list. Send an empty email to
+pod-people-subscribe@perl.org to subscribe.
+
+This module is managed in an open GitHub repository,
+L<http://github.com/theory/pod-simple/>. Feel free to fork and contribute, or
+to clone L<git://github.com/theory/pod-simple.git> and send patches!
+
+Patches against Pod::Simple are welcome. Please send bug reports to
+<bug-pod-simple@rt.cpan.org>.
+
 =head1 COPYRIGHT AND DISCLAIMERS
 
 Copyright (c) 2002 Sean M. Burke.  All rights reserved.
@@ -124,7 +143,19 @@ merchantability or fitness for a particular purpose.
 
 =head1 AUTHOR
 
-Sean M. Burke C<sburke@cpan.org>
+Pod::Simple was created by Sean M. Burke <sburke@cpan.org>.
+But don't bother him, he's retired.
 
-=cut
+Pod::Simple is maintained by:
+
+=over
+
+=item * Allison Randal C<allison@perl.org>
+
+=item * Hans Dieter Pearcey C<hdp@cpan.org>
 
+=item * David E. Wheeler C<dwheeler@cpan.org>
+
+=back
+
+=cut
index 2d1a1d7..ccd03df 100644 (file)
@@ -2,8 +2,10 @@
 require 5;
 package Pod::Simple::PullParserTextToken;
 use Pod::Simple::PullParserToken ();
-@ISA = ('Pod::Simple::PullParserToken');
 use strict;
+use vars qw(@ISA $VERSION);
+@ISA = ('Pod::Simple::PullParserToken');
+$VERSION = '3.11';
 
 sub new {  # Class->new(text);
   my $class = shift;
@@ -82,6 +84,19 @@ Pod::Simple::PullParserTextToken->new( I<text> )
 
 L<Pod::Simple::PullParserToken>, L<Pod::Simple>, L<Pod::Simple::Subclassing>
 
+=head1 SUPPORT
+
+Questions or discussion about POD and Pod::Simple should be sent to the
+pod-people@perl.org mail list. Send an empty email to
+pod-people-subscribe@perl.org to subscribe.
+
+This module is managed in an open GitHub repository,
+L<http://github.com/theory/pod-simple/>. Feel free to fork and contribute, or
+to clone L<git://github.com/theory/pod-simple.git> and send patches!
+
+Patches against Pod::Simple are welcome. Please send bug reports to
+<bug-pod-simple@rt.cpan.org>.
+
 =head1 COPYRIGHT AND DISCLAIMERS
 
 Copyright (c) 2002 Sean M. Burke.  All rights reserved.
@@ -95,7 +110,19 @@ merchantability or fitness for a particular purpose.
 
 =head1 AUTHOR
 
-Sean M. Burke C<sburke@cpan.org>
+Pod::Simple was created by Sean M. Burke <sburke@cpan.org>.
+But don't bother him, he's retired.
 
-=cut
+Pod::Simple is maintained by:
 
+=over
+
+=item * Allison Randal C<allison@perl.org>
+
+=item * Hans Dieter Pearcey C<hdp@cpan.org>
+
+=item * David E. Wheeler C<dwheeler@cpan.org>
+
+=back
+
+=cut
index 9ec3659..ff8ccc1 100644 (file)
@@ -3,7 +3,7 @@ require 5;
 package Pod::Simple::PullParserToken;
  # Base class for tokens gotten from Pod::Simple::PullParser's $parser->get_token
 @ISA = ();
-$VERSION = '2.02';
+$VERSION = '3.11';
 use strict;
 
 sub new {  # Class->new('type', stuff...);  ## Overridden in derived classes anyway
@@ -119,6 +119,19 @@ L<Pod::Simple::PullParserEndToken>.
 
 L<Pod::Simple::PullParser> and L<Pod::Simple>
 
+=head1 SUPPORT
+
+Questions or discussion about POD and Pod::Simple should be sent to the
+pod-people@perl.org mail list. Send an empty email to
+pod-people-subscribe@perl.org to subscribe.
+
+This module is managed in an open GitHub repository,
+L<http://github.com/theory/pod-simple/>. Feel free to fork and contribute, or
+to clone L<git://github.com/theory/pod-simple.git> and send patches!
+
+Patches against Pod::Simple are welcome. Please send bug reports to
+<bug-pod-simple@rt.cpan.org>.
+
 =head1 COPYRIGHT AND DISCLAIMERS
 
 Copyright (c) 2002 Sean M. Burke.  All rights reserved.
@@ -132,7 +145,19 @@ merchantability or fitness for a particular purpose.
 
 =head1 AUTHOR
 
-Sean M. Burke C<sburke@cpan.org>
+Pod::Simple was created by Sean M. Burke <sburke@cpan.org>.
+But don't bother him, he's retired.
 
-=cut
+Pod::Simple is maintained by:
+
+=over
 
+=item * Allison Randal C<allison@perl.org>
+
+=item * Hans Dieter Pearcey C<hdp@cpan.org>
+
+=item * David E. Wheeler C<dwheeler@cpan.org>
+
+=back
+
+=cut
index de2a7b3..33daf15 100644 (file)
@@ -8,7 +8,7 @@ package Pod::Simple::RTF;
 
 use strict;
 use vars qw($VERSION @ISA %Escape $WRAP %Tagmap);
-$VERSION = '2.02';
+$VERSION = '3.11';
 use Pod::Simple::PullParser ();
 BEGIN {@ISA = ('Pod::Simple::PullParser')}
 
@@ -655,6 +655,19 @@ even more, see the source and/or write to me.
 L<Pod::Simple>, L<RTF::Writer>, L<RTF::Cookbook>, L<RTF::Document>,
 L<RTF::Generator>
 
+=head1 SUPPORT
+
+Questions or discussion about POD and Pod::Simple should be sent to the
+pod-people@perl.org mail list. Send an empty email to
+pod-people-subscribe@perl.org to subscribe.
+
+This module is managed in an open GitHub repository,
+L<http://github.com/theory/pod-simple/>. Feel free to fork and contribute, or
+to clone L<git://github.com/theory/pod-simple.git> and send patches!
+
+Patches against Pod::Simple are welcome. Please send bug reports to
+<bug-pod-simple@rt.cpan.org>.
+
 =head1 COPYRIGHT AND DISCLAIMERS
 
 Copyright (c) 2002 Sean M. Burke.  All rights reserved.
@@ -668,7 +681,19 @@ merchantability or fitness for a particular purpose.
 
 =head1 AUTHOR
 
-Sean M. Burke C<sburke@cpan.org>
+Pod::Simple was created by Sean M. Burke <sburke@cpan.org>.
+But don't bother him, he's retired.
 
-=cut
+Pod::Simple is maintained by:
+
+=over
 
+=item * Allison Randal C<allison@perl.org>
+
+=item * Hans Dieter Pearcey C<hdp@cpan.org>
+
+=item * David E. Wheeler C<dwheeler@cpan.org>
+
+=back
+
+=cut
index 980b3b7..3796434 100644 (file)
@@ -4,7 +4,7 @@ package Pod::Simple::Search;
 use strict;
 
 use vars qw($VERSION $MAX_VERSION_WITHIN $SLEEPY);
-$VERSION = 3.04;   ## Current version of this package
+$VERSION = '3.11';   ## Current version of this package
 
 BEGIN { *DEBUG = sub () {0} unless defined &DEBUG; }   # set DEBUG level
 use Carp ();
@@ -996,21 +996,48 @@ with default attribute values is used.
 
 Returns true if the supplied filename (not POD module) contains some Pod
 documentation.
+=head1 SUPPORT
 
+Questions or discussion about POD and Pod::Simple should be sent to the
+pod-people@perl.org mail list. Send an empty email to
+pod-people-subscribe@perl.org to subscribe.
+
+This module is managed in an open GitHub repository,
+L<http://github.com/theory/pod-simple/>. Feel free to fork and contribute, or
+to clone L<git://github.com/theory/pod-simple.git> and send patches!
+
+Patches against Pod::Simple are welcome. Please send bug reports to
+<bug-pod-simple@rt.cpan.org>.
+
+=head1 COPYRIGHT AND DISCLAIMERS
+
+Copyright (c) 2002 Sean M. Burke.  All rights reserved.
+
+This library is free software; you can redistribute it and/or modify it
+under the same terms as Perl itself.
+
+This program is distributed in the hope that it will be useful, but
+without any warranty; without even the implied warranty of
+merchantability or fitness for a particular purpose.
 
 =head1 AUTHOR
 
-Sean M. Burke E<lt>sburke@cpan.orgE<gt>
-borrowed code from
-Marek Rouchal's Pod::Find, which in turn
-heavily borrowed code from Nick Ing-Simmons' PodToHtml.
+Pod::Simple was created by Sean M. Burke <sburke@cpan.org> with code borrowed
+from Marek Rouchal's L<Pod::Find>, which in turn heavily borrowed code from
+Nick Ing-Simmons' C<PodToHtml>.
 
-Tim Jenness E<lt>t.jenness@jach.hawaii.eduE<gt> provided
-C<find> and C<contains_pod> to Pod::Find.
+But don't bother him, he's retired.
 
-=head1 SEE ALSO
+Pod::Simple is maintained by:
 
-L<Pod::Simple>, L<Pod::Perldoc>
+=over
 
-=cut
+=item * Allison Randal C<allison@perl.org>
+
+=item * Hans Dieter Pearcey C<hdp@cpan.org>
+
+=item * David E. Wheeler C<dwheeler@cpan.org>
 
+=back
+
+=cut
index 64dd155..ca9c7fb 100644 (file)
@@ -6,7 +6,7 @@ use strict;
 use Carp ();
 use Pod::Simple ();
 use vars qw( $ATTR_PAD @ISA $VERSION $SORT_ATTRS);
-$VERSION = '2.02';
+$VERSION = '3.11';
 BEGIN {
   @ISA = ('Pod::Simple');
   *DEBUG = \&Pod::Simple::DEBUG unless defined &DEBUG;
@@ -136,6 +136,19 @@ L<perllol>
 
 L<The "Tree" subsubsection in XML::Parser|XML::Parser/"Tree">
 
+=head1 SUPPORT
+
+Questions or discussion about POD and Pod::Simple should be sent to the
+pod-people@perl.org mail list. Send an empty email to
+pod-people-subscribe@perl.org to subscribe.
+
+This module is managed in an open GitHub repository,
+L<http://github.com/theory/pod-simple/>. Feel free to fork and contribute, or
+to clone L<git://github.com/theory/pod-simple.git> and send patches!
+
+Patches against Pod::Simple are welcome. Please send bug reports to
+<bug-pod-simple@rt.cpan.org>.
+
 =head1 COPYRIGHT AND DISCLAIMERS
 
 Copyright (c) 2002 Sean M. Burke.  All rights reserved.
@@ -149,7 +162,19 @@ merchantability or fitness for a particular purpose.
 
 =head1 AUTHOR
 
-Sean M. Burke C<sburke@cpan.org>
+Pod::Simple was created by Sean M. Burke <sburke@cpan.org>.
+But don't bother him, he's retired.
 
-=cut
+Pod::Simple is maintained by:
+
+=over
 
+=item * Allison Randal C<allison@perl.org>
+
+=item * Hans Dieter Pearcey C<hdp@cpan.org>
+
+=item * David E. Wheeler C<dwheeler@cpan.org>
+
+=back
+
+=cut
index d4ee694..d15f308 100644 (file)
@@ -893,6 +893,18 @@ L<perlpodspec|perlpodspec>
 
 L<perldoc>
 
+=head1 SUPPORT
+
+Questions or discussion about POD and Pod::Simple should be sent to the
+pod-people@perl.org mail list. Send an empty email to
+pod-people-subscribe@perl.org to subscribe.
+
+This module is managed in an open GitHub repository,
+L<http://github.com/theory/pod-simple/>. Feel free to fork and contribute, or
+to clone L<git://github.com/theory/pod-simple.git> and send patches!
+
+Patches against Pod::Simple are welcome. Please send bug reports to
+<bug-pod-simple@rt.cpan.org>.
 
 =head1 COPYRIGHT AND DISCLAIMERS
 
@@ -907,8 +919,20 @@ merchantability or fitness for a particular purpose.
 
 =head1 AUTHOR
 
-Sean M. Burke C<sburke@cpan.org>
+Pod::Simple was created by Sean M. Burke <sburke@cpan.org>.
+But don't bother him, he's retired.
+
+Pod::Simple is maintained by:
+
+=over
+
+=item * Allison Randal C<allison@perl.org>
+
+=item * Hans Dieter Pearcey C<hdp@cpan.org>
 
+=item * David E. Wheeler C<dwheeler@cpan.org>
+
+=back
 
 =for notes
 Hm, my old podchecker version (1.2) says:
index df82c07..1713f04 100644 (file)
@@ -6,7 +6,7 @@ use Carp ();
 use Pod::Simple::Methody ();
 use Pod::Simple ();
 use vars qw( @ISA $VERSION $FREAKYMODE);
-$VERSION = '2.02';
+$VERSION = '3.11';
 @ISA = ('Pod::Simple::Methody');
 BEGIN { *DEBUG = defined(&Pod::Simple::DEBUG)
           ? \&Pod::Simple::DEBUG
@@ -66,6 +66,14 @@ sub end_Para        { $_[0]->emit_par( 0) }
 sub end_item_bullet { $_[0]->emit_par( 0) }
 sub end_item_number { $_[0]->emit_par( 0) }
 sub end_item_text   { $_[0]->emit_par(-2) }
+sub start_L         { $_[0]{'Link'} = $_[1] if $_[1]->{type} eq 'url' }
+sub end_L           {
+    if (my $link = delete $_[0]{'Link'}) {
+        # Append the URL to the output unless it's already present.
+        $_[0]{'Thispara'} .= " <$link->{to}>"
+            unless $_[0]{'Thispara'} =~ /\b\E$link->{to}/;
+    }
+}
 
 sub emit_par {
   my($self, $tweak_indent) = splice(@_,0,2);
@@ -133,6 +141,19 @@ This is a subclass of L<Pod::Simple> and inherits all its methods.
 
 L<Pod::Simple>, L<Pod::Simple::TextContent>, L<Pod::Text>
 
+=head1 SUPPORT
+
+Questions or discussion about POD and Pod::Simple should be sent to the
+pod-people@perl.org mail list. Send an empty email to
+pod-people-subscribe@perl.org to subscribe.
+
+This module is managed in an open GitHub repository,
+L<http://github.com/theory/pod-simple/>. Feel free to fork and contribute, or
+to clone L<git://github.com/theory/pod-simple.git> and send patches!
+
+Patches against Pod::Simple are welcome. Please send bug reports to
+<bug-pod-simple@rt.cpan.org>.
+
 =head1 COPYRIGHT AND DISCLAIMERS
 
 Copyright (c) 2002 Sean M. Burke.  All rights reserved.
@@ -146,7 +167,19 @@ merchantability or fitness for a particular purpose.
 
 =head1 AUTHOR
 
-Sean M. Burke C<sburke@cpan.org>
+Pod::Simple was created by Sean M. Burke <sburke@cpan.org>.
+But don't bother him, he's retired.
 
-=cut
+Pod::Simple is maintained by:
 
+=over
+
+=item * Allison Randal C<allison@perl.org>
+
+=item * Hans Dieter Pearcey C<hdp@cpan.org>
+
+=item * David E. Wheeler C<dwheeler@cpan.org>
+
+=back
+
+=cut
index 3675b00..d920d53 100644 (file)
@@ -6,7 +6,7 @@ use strict;
 use Carp ();
 use Pod::Simple ();
 use vars qw( @ISA $VERSION );
-$VERSION = '2.02';
+$VERSION = '3.11';
 @ISA = ('Pod::Simple');
 
 sub new {
@@ -68,6 +68,19 @@ This is a subclass of L<Pod::Simple> and inherits all its methods.
 
 L<Pod::Simple>, L<Pod::Simple::Text>, L<Pod::Spell>
 
+=head1 SUPPORT
+
+Questions or discussion about POD and Pod::Simple should be sent to the
+pod-people@perl.org mail list. Send an empty email to
+pod-people-subscribe@perl.org to subscribe.
+
+This module is managed in an open GitHub repository,
+L<http://github.com/theory/pod-simple/>. Feel free to fork and contribute, or
+to clone L<git://github.com/theory/pod-simple.git> and send patches!
+
+Patches against Pod::Simple are welcome. Please send bug reports to
+<bug-pod-simple@rt.cpan.org>.
+
 =head1 COPYRIGHT AND DISCLAIMERS
 
 Copyright (c) 2002 Sean M. Burke.  All rights reserved.
@@ -81,7 +94,19 @@ merchantability or fitness for a particular purpose.
 
 =head1 AUTHOR
 
-Sean M. Burke C<sburke@cpan.org>
+Pod::Simple was created by Sean M. Burke <sburke@cpan.org>.
+But don't bother him, he's retired.
 
-=cut
+Pod::Simple is maintained by:
+
+=over
 
+=item * Allison Randal C<allison@perl.org>
+
+=item * Hans Dieter Pearcey C<hdp@cpan.org>
+
+=item * David E. Wheeler C<dwheeler@cpan.org>
+
+=back
+
+=cut
index b031fe5..9003d43 100644 (file)
@@ -3,6 +3,8 @@ use strict;
 package Pod::Simple::TiedOutFH;
 use Symbol ('gensym');
 use Carp ();
+use vars qw($VERSION );
+$VERSION = '3.11';
 
 #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
index 434f963..28ab27f 100644 (file)
@@ -1,6 +1,8 @@
 
 require 5;
 package Pod::Simple::Transcode;
+use vars qw($VERSION );
+$VERSION = '3.11';
 
 BEGIN {
   if(defined &DEBUG) {;} # Okay
index d5eb7e5..bf2fd27 100644 (file)
@@ -5,7 +5,7 @@ require 5;
 package Pod::Simple::TranscodeDumb;
 use strict;
 use vars qw($VERSION %Supported);
-$VERSION = '2.02';
+$VERSION = '3.11';
 # This module basically pretends it knows how to transcode, except
 #  only for null-transcodings!  We use this when Encode isn't
 #  available.
index 3fc26a4..20c7588 100644 (file)
@@ -8,6 +8,8 @@ package Pod::Simple::TranscodeSmart;
 use strict;
 use Pod::Simple;
 require Encode;
+use vars qw($VERSION );
+$VERSION = '3.11';
 
 sub is_dumb  {0}
 sub is_smart {1}
index e4d6634..c371db9 100644 (file)
@@ -28,7 +28,7 @@ L<Pod::Simple::HTML>, but it largely preserves the same interface.
 package Pod::Simple::XHTML;
 use strict;
 use vars qw( $VERSION @ISA $HAS_HTML_ENTITIES );
-$VERSION = '3.10';
+$VERSION = '3.11';
 use Carp ();
 use Pod::Simple::Methody ();
 @ISA = ('Pod::Simple::Methody');
@@ -76,6 +76,16 @@ to put before the "Foo%3a%3aBar". The default value is
 What to put after "Foo%3a%3aBar" in the URL. This option is not set by
 default.
 
+=head2 man_url_prefix
+
+In turning C<< L<crontab(5)> >> into http://whatever/man/1/crontab, what
+to put before the "1/crontab". The default value is
+"http://man.he.net/man".
+
+=head2 man_url_postfix
+
+What to put after "1/crontab" in the URL. This option is not set by default.
+
 =head2 title_prefix, title_postfix
 
 What to put before and after the title in the head. The values should
@@ -146,6 +156,8 @@ index for the sake of tradition).
 __PACKAGE__->_accessorize(
  'perldoc_url_prefix',
  'perldoc_url_postfix',
+ 'man_url_prefix',
+ 'man_url_postfix',
  'title_prefix',  'title_postfix',
  'html_css', 
  'html_javascript',
@@ -179,6 +191,7 @@ sub new {
   $new->{'output_fh'} ||= *STDOUT{IO};
   $new->accept_targets( 'html', 'HTML' );
   $new->perldoc_url_prefix('http://search.cpan.org/perldoc?');
+  $new->man_url_prefix('http://man.he.net/man');
   $new->html_header_tags('<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />');
   $new->nix_X_codes(1);
   $new->codes_in_verbatim(1);
@@ -433,53 +446,24 @@ sub end_B   { $_[0]{'scratch'} .= '</b>' }
 sub start_C { $_[0]{'scratch'} .= '<code>' }
 sub end_C   { $_[0]{'scratch'} .= '</code>' }
 
-sub start_E {
-  my ($self, $flags) = @_;
-  push @{ $self->{'saved'} }, $self->{'scratch'};
-  $self->{'scratch'} = '';
-}
-sub end_E   {
-  my ($self, $flags) = @_;
-  my $previous = pop @{ $self->{'saved'} };
-  my $entity = $self->{'scratch'};
-
-  if ($entity =~ 'sol' or $entity =~ 'verbar') {
-    my $char = Pod::Escapes::e2char($entity);
-    if (defined($char)) {
-      $self->{'scratch'} = $previous . $char;
-      return;
-    }
-  }
-
-  if ($entity =~ /^[0-9]/) {
-      $entity = '#' . $entity;
-  }
-
-  $self->{'scratch'} = $previous . '&'. $entity . ';'
-}
-
 sub start_F { $_[0]{'scratch'} .= '<i>' }
 sub end_F   { $_[0]{'scratch'} .= '</i>' }
 
 sub start_I { $_[0]{'scratch'} .= '<i>' }
 sub end_I   { $_[0]{'scratch'} .= '</i>' }
 
-sub start_L { 
+sub start_L {
   my ($self, $flags) = @_;
-    my $url;
-    if ($flags->{'type'} eq 'url') {
-      $url = $flags->{'to'};
-    } elsif ($flags->{'type'} eq 'pod') {
-      $url .= $self->perldoc_url_prefix || '';
-      $url .= $flags->{'to'} || '';
-      $url .= '/' . $flags->{'section'} if ($flags->{'section'});
-      $url .= $self->perldoc_url_postfix || '';
-#    require Data::Dumper;
-#    print STDERR Data::Dumper->Dump([$flags]);
-    }
-
-    $self->{'scratch'} .= '<a href="'. $url . '">';
+    my ($type, $to, $section) = @{$flags}{'type', 'to', 'section'};
+    my $url = $type eq 'url' ? $to
+            : $type eq 'pod' ? $self->resolve_pod_page_link($to, $section)
+            : $type eq 'man' ? $self->resolve_man_page_link($to, $section)
+            :                  undef;
+
+    # If it's an unknown type, use an attribute-less <a> like HTML.pm.
+    $self->{'scratch'} .= '<a' . ($url ? ' href="'. $url . '">' : '>');
 }
+
 sub end_L   { $_[0]{'scratch'} .= '</a>' }
 
 sub start_S { $_[0]{'scratch'} .= '<nobr>' }
@@ -496,6 +480,69 @@ sub emit {
   return;
 }
 
+=head2 resolve_pod_page_link
+
+  my $url = $pod->resolve_pod_page_link('Net::Ping', 'INSTALL');
+  my $url = $pod->resolve_pod_page_link('perlpodspec');
+  my $url = $pod->resolve_pod_page_link(undef, 'SYNOPSIS');
+
+Resolves a POD link target (typically a module or POD file name) and section
+name to a URL. The resulting link will be returned for the above examples as:
+
+  http://search.cpan.org/perldoc?Net::Ping#INSTALL
+  http://search.cpan.org/perldoc?perlpodspec
+  #SYNOPSIS
+
+Note that when there is only a section argument the URL will simply be a link
+to a section in the current document.
+
+=cut
+
+sub resolve_pod_page_link {
+    my ($self, $to, $section) = @_;
+    return undef unless defined $to || defined $section;
+    if (defined $section) {
+        $section = '#' . $self->idify($section, 1);
+        return $section unless defined $to;
+    } else {
+        $section = ''
+    }
+
+    return ($self->perldoc_url_prefix || '')
+        . encode_entities($to) . $section
+        . ($self->perldoc_url_postfix || '');
+}
+
+=head2 resolve_man_page_link
+
+  my $url = $pod->resolve_man_page_link('crontab(5)', 'EXAMPLE CRON FILE');
+  my $url = $pod->resolve_man_page_link('crontab');
+
+Resolves a man page link target and numeric section to a URL. The resulting
+link will be returned for the above examples as:
+
+    http://man.he.net/man5/crontab
+    http://man.he.net/man1/crontab
+
+Note that the first argument is required. The section number will be parsed
+from it, and if it's missing will default to 1. The second argument is
+currently ignored, as L<man.he.net|http://man.he.net> does not currently
+include linkable IDs or anchor names in its pages. Subclass to link to a
+different man page HTTP server.
+
+=cut
+
+sub resolve_man_page_link {
+    my ($self, $to, $section) = @_;
+    return undef unless defined $to;
+    my ($page, $part) = $to =~ /^([^(]+)(?:[(](\d+)[)])?$/;
+    return undef unless $page;
+    return ($self->man_url_prefix || '')
+        . ($part || 1) . "/" . encode_entities($page)
+        . ($self->man_url_postfix || '');
+
+}
+
 =head2 idify
 
   my $id   = $pod->idify($text);
@@ -545,9 +592,6 @@ sub idify {
     return "$t$i";
 }
 
-# Bypass built-in E<> handling to preserve entity encoding
-sub _treat_Es {} 
-
 1;
 
 __END__
@@ -556,20 +600,51 @@ __END__
 
 L<Pod::Simple>, L<Pod::Simple::Methody>
 
-=head1 COPYRIGHT
+=head1 SEE ALSO
+
+L<Pod::Simple>, L<Pod::Simple::Text>, L<Pod::Spell>
+
+=head1 SUPPORT
+
+Questions or discussion about POD and Pod::Simple should be sent to the
+pod-people@perl.org mail list. Send an empty email to
+pod-people-subscribe@perl.org to subscribe.
+
+This module is managed in an open GitHub repository,
+L<http://github.com/theory/pod-simple/>. Feel free to fork and contribute, or
+to clone L<git://github.com/theory/pod-simple.git> and send patches!
+
+Patches against Pod::Simple are welcome. Please send bug reports to
+<bug-pod-simple@rt.cpan.org>.
+
+=head1 COPYRIGHT AND DISCLAIMERS
 
 Copyright (c) 2003-2005 Allison Randal.
 
-This library is free software; you can redistribute it and/or modify
-it under the same terms as Perl itself.
+This library is free software; you can redistribute it and/or modify it
+under the same terms as Perl itself.
 
-This library is distributed in the hope that it will be useful, but
+This program is distributed in the hope that it will be useful, but
 without any warranty; without even the implied warranty of
 merchantability or fitness for a particular purpose.
 
 =head1 AUTHOR
 
-Allison Randal <allison@perl.org>
+Pod::Simpele::XHTML was created by Allison Randal <allison@perl.org>.
 
-=cut
+Pod::Simple was created by Sean M. Burke <sburke@cpan.org>.
+But don't bother him, he's retired.
+
+Pod::Simple is maintained by:
+
+=over
+
+=item * Allison Randal C<allison@perl.org>
+
+=item * Hans Dieter Pearcey C<hdp@cpan.org>
+
+=item * David E. Wheeler C<dwheeler@cpan.org>
 
+=back
+
+=cut
index 1e7ec15..e81f9a8 100644 (file)
@@ -5,7 +5,7 @@ use strict;
 use Carp ();
 use Pod::Simple ();
 use vars qw( $ATTR_PAD @ISA $VERSION $SORT_ATTRS);
-$VERSION = '2.02';
+$VERSION = '3.11';
 BEGIN {
   @ISA = ('Pod::Simple');
   *DEBUG = \&Pod::Simple::DEBUG unless defined &DEBUG;
@@ -137,10 +137,26 @@ options in this module (and the dozen modules it depends on) are
 undocumented; but one of those undocumented bits might be just what
 you're looking for.
 
+=head1 SEE ALSO
+
+L<Pod::Simple>, L<Pod::Simple::Text>, L<Pod::Spell>
+
+=head1 SUPPORT
+
+Questions or discussion about POD and Pod::Simple should be sent to the
+pod-people@perl.org mail list. Send an empty email to
+pod-people-subscribe@perl.org to subscribe.
+
+This module is managed in an open GitHub repository,
+L<http://github.com/theory/pod-simple/>. Feel free to fork and contribute, or
+to clone L<git://github.com/theory/pod-simple.git> and send patches!
+
+Patches against Pod::Simple are welcome. Please send bug reports to
+<bug-pod-simple@rt.cpan.org>.
 
 =head1 COPYRIGHT AND DISCLAIMERS
 
-Copyright (c) 2002-4 Sean M. Burke.  All rights reserved.
+Copyright (c) 2002-2004 Sean M. Burke.  All rights reserved.
 
 This library is free software; you can redistribute it and/or modify it
 under the same terms as Perl itself.
@@ -151,7 +167,19 @@ merchantability or fitness for a particular purpose.
 
 =head1 AUTHOR
 
-Sean M. Burke C<sburke@cpan.org>
+Pod::Simple was created by Sean M. Burke <sburke@cpan.org>.
+But don't bother him, he's retired.
 
-=cut
+Pod::Simple is maintained by:
 
+=over
+
+=item * Allison Randal C<allison@perl.org>
+
+=item * Hans Dieter Pearcey C<hdp@cpan.org>
+
+=item * David E. Wheeler C<dwheeler@cpan.org>
+
+=back
+
+=cut
index 0c66d2c..cada7e4 100644 (file)
@@ -8,7 +8,7 @@ BEGIN {
 
 use strict;
 use Test;
-BEGIN { plan tests => 14 };
+BEGIN { plan tests => 80 };
 
 #use Pod::Simple::Debug (6);
 
@@ -102,6 +102,362 @@ Do they always      lose the rest of the line?
 END
 );
 
+$x = 'Pod::Simple::Text';
+# Test text output of links.
+ok(
+    $x->_out(qq{=pod\n\nL<Net::Ping>\n}),
+    "    Net::Ping\n\n"
+);
+
+ok(
+    $x->_out(qq{=pod\n\nBe sure to read the L<Net::Ping> docs\n}),
+    "    Be sure to read the Net::Ping docs\n\n"
+);
+
+ok(
+    $x->_out(qq{=pod\n\nL<http://www.perl.com>\n}),
+    "    http://www.perl.com\n\n"
+);
+
+ok(
+    $x->_out(qq{=pod\n\nL<crontab(5)>\n}),
+    "    crontab(5)\n\n"
+);
+
+ok(
+    $x->_out(qq{=pod\n\nL<Net::Ping/Ping-pong>\n}),
+    qq{    "Ping-pong" in Net::Ping\n\n}
+);
+
+ok(
+    $x->_out(qq{=pod\n\nL</"Object Methods">\n}),
+    qq{    "Object Methods"\n\n}
+);
+
+ok(
+    $x->_out(qq{=pod\n\nL</Object Methods>\n}),
+    qq{    "Object Methods"\n\n}
+);
+
+ok(
+    $x->_out(qq{=pod\n\nL<"Object Methods">\n}),
+    qq{    "Object Methods"\n\n}
+);
+
+ok(
+    $x->_out(qq{=pod\n\nL<Net::Ping/Ping-E<112>ong>\n}),
+    qq{    "Ping-pong" in Net::Ping\n\n}
+);
+
+ok(
+    $x->_out(qq{=pod\n\nL<news:comp.lang.perl.misc>\n}),
+    "    news:comp.lang.perl.misc\n\n"
+);
+
+ok(
+    $x->_out(qq{=pod\n\nL<http://www.perl.org>\n}),
+    "    http://www.perl.org\n\n"
+);
+
+ok(
+    $x->_out(qq{=pod\n\nSee L<http://www.perl.org>\n}),
+    "    See http://www.perl.org\n\n"
+);
+
+ok(
+    $x->_out(qq{=pod\n\nL<http://www.perl.org/CPAN/authors/id/S/SB/SBURKE/>\n}),
+    "    http://www.perl.org/CPAN/authors/id/S/SB/SBURKE/\n\n"
+);
+
+ok(
+    $x->_out(qq{=pod\n\nL<news:compE<46>lang.perl.misc>\n}),
+    "    news:comp.lang.perl.misc\n\n"
+);
+
+ok(
+    $x->_out(qq{=pod\n\nL<http://wwwE<46>perl.org>\n}),
+    "    http://www.perl.org\n\n"
+);
+
+ok(
+    $x->_out(qq{=pod\n\nL<things|crontab(5)>\n}),
+    "    things\n\n"
+);
+
+ok(
+    $x->_out(qq{=pod\n\nL<things|crontab(5)/ENVIRONMENT>\n}),
+    "    things\n\n"
+);
+
+ok(
+    $x->_out(qq{=pod\n\nL<Perl Error Messages|perldiag>\n}),
+    "    Perl Error Messages\n\n"
+);
+
+ok(
+    $x->_out(qq{=pod\n\nL<Perl\nError\nMessages|perldiag>\n}),
+    "    Perl Error Messages\n\n"
+);
+
+ok(
+    $x->_out(qq{=pod\n\nL<Perl\nError\t  Messages|perldiag>\n}),
+    "    Perl Error Messages\n\n"
+);
+
+ok(
+    $x->_out(qq{=pod\n\nL<perl.org|http://www.perl.org>\n}),
+    "    perl.org <http://www.perl.org>\n\n"
+);
+
+ok(
+    $x->_out(qq{=pod\n\nSee L<perl.org|http://www.perl.org>\n}),
+    "    See perl.org <http://www.perl.org>\n\n"
+);
+
+
+# Test HTML output of links.
+use Pod::Simple::HTML;
+my $PERLDOC = "http://search.cpan.org/perldoc";
+my $MANURL = "http://man.he.net/man";
+sub x ($) {
+    Pod::Simple::HTML->_out(
+        sub {  $_[0]->bare_output(1)  },
+        "=pod\n\n$_[0]",
+    )
+}
+
+ok(
+    x(qq{L<Net::Ping>\n}),
+    qq{\n<p><a href="$PERLDOC?Net%3A%3APing" class="podlinkpod"\n>Net::Ping</a></p>\n}
+);
+
+ok(
+    x(qq{Be sure to read the L<Net::Ping> docs\n}),
+    qq{\n<p>Be sure to read the <a href="$PERLDOC?Net%3A%3APing" class="podlinkpod"\n>Net::Ping</a> docs</p>\n}
+);
+
+ok(
+    x(qq{L<http://www.perl.com>\n}),
+    qq{\n<p><a href="http://www.perl.com" class="podlinkurl"\n>http://www.perl.com</a></p>\n}
+);
+
+ok(
+    x(qq{L<crontab(5)>\n}),
+    qq{\n<p><a href="${MANURL}5/crontab" class="podlinkman"\n>crontab(5)</a></p>\n}
+);
+
+ok(
+    x(qq{L<Net::Ping/Ping-pong>\n}),
+    qq{\n<p><a href="$PERLDOC?Net%3A%3APing#Ping-pong" class="podlinkpod"\n>&#34;Ping-pong&#34; in Net::Ping</a></p>\n}
+);
+
+ok(
+    x(qq{L</"Object Methods">\n}),
+    qq{\n<p><a href="#Object_Methods" class="podlinkpod"\n>&#34;Object Methods&#34;</a></p>\n}
+);
+
+ok(
+    x(qq{L</Object Methods>\n}),
+    qq{\n<p><a href="#Object_Methods" class="podlinkpod"\n>&#34;Object Methods&#34;</a></p>\n}
+);
+
+ok(
+    x(qq{L<"Object Methods">\n}),
+    qq{\n<p><a href="#Object_Methods" class="podlinkpod"\n>&#34;Object Methods&#34;</a></p>\n}
+);
+
+ok(
+    x(qq{L<Net::Ping/Ping-E<112>ong>\n}),
+    qq{\n<p><a href="$PERLDOC?Net%3A%3APing#Ping-pong" class="podlinkpod"\n>&#34;Ping-pong&#34; in Net::Ping</a></p>\n}
+);
+
+ok(
+    x(qq{L<news:comp.lang.perl.misc>\n}),
+    qq{\n<p><a href="news:comp.lang.perl.misc" class="podlinkurl"\n>news:comp.lang.perl.misc</a></p>\n}
+);
+
+ok(
+    x(qq{L<http://www.perl.org>\n}),
+    qq{\n<p><a href="http://www.perl.org" class="podlinkurl"\n>http://www.perl.org</a></p>\n}
+);
+
+ok(
+    x(qq{See L<http://www.perl.org>\n}),
+    qq{\n<p>See <a href="http://www.perl.org" class="podlinkurl"\n>http://www.perl.org</a></p>\n}
+);
+
+ok(
+    x(qq{L<http://www.perl.org/CPAN/authors/id/S/SB/SBURKE/>\n}),
+    qq{\n<p><a href="http://www.perl.org/CPAN/authors/id/S/SB/SBURKE/" class="podlinkurl"\n>http://www.perl.org/CPAN/authors/id/S/SB/SBURKE/</a></p>\n}
+);
+
+ok(
+    x(qq{L<news:compE<46>lang.perl.misc>\n}),
+    qq{\n<p><a href="news:comp.lang.perl.misc" class="podlinkurl"\n>news:comp.lang.perl.misc</a></p>\n}
+);
+
+ok(
+    x(qq{L<http://wwwE<46>perl.org>\n}),
+    qq{\n<p><a href="http://www.perl.org" class="podlinkurl"\n>http://www.perl.org</a></p>\n}
+);
+
+ok(
+    x(qq{L<things|crontab(5)>\n}),
+    qq{\n<p><a href="${MANURL}5/crontab" class="podlinkman"\n>things</a></p>\n}
+);
+
+ok(
+    x(qq{L<things|crontab(5)/ENVIRONMENT>\n}),
+    qq{\n<p><a href="${MANURL}5/crontab" class="podlinkman"\n>things</a></p>\n}
+);
+
+ok(
+    x(qq{L<Perl Error Messages|perldiag>\n}),
+    qq{\n<p><a href="$PERLDOC?perldiag" class="podlinkpod"\n>Perl Error Messages</a></p>\n}
+);
+
+ok(
+    x(qq{L<Perl\nError\nMessages|perldiag>\n}),
+    qq{\n<p><a href="$PERLDOC?perldiag" class="podlinkpod"\n>Perl Error Messages</a></p>\n}
+);
+
+ok(
+    x(qq{L<Perl\nError\t  Messages|perldiag>\n}),
+    qq{\n<p><a href="$PERLDOC?perldiag" class="podlinkpod"\n>Perl Error Messages</a></p>\n}
+);
+
+ok(
+    x(qq{L<perl.org|http://www.perl.org>\n}),
+    qq{\n<p><a href="http://www.perl.org" class="podlinkurl"\n>perl.org</a></p>\n}
+);
+
+ok(
+    x(qq{See L<perl.org|http://www.perl.org>\n}),
+    qq{\n<p>See <a href="http://www.perl.org" class="podlinkurl"\n>perl.org</a></p>\n}
+);
+
+# Test link output in XHTML.
+use Pod::Simple::XHTML;
+sub o ($) {
+    my $p = Pod::Simple::XHTML->new;
+    $p->html_header("");
+    $p->html_footer("");
+    my $results = '';
+    $p->output_string( \$results ); # Send the resulting output to a string
+    $p->parse_string_document("=pod\n\n$_[0]");
+    return $results;
+}
+
+ok(
+    o(qq{L<Net::Ping>}),
+    qq{<p><a href="$PERLDOC?Net::Ping">Net::Ping</a></p>\n\n}
+);
+
+ok(
+    o(qq{Be sure to read the L<Net::Ping> docs}),
+    qq{<p>Be sure to read the <a href="$PERLDOC?Net::Ping">Net::Ping</a> docs</p>\n\n}
+);
+
+ok(
+    o(qq{L<http://www.perl.com>}),
+    qq{<p><a href="http://www.perl.com">http://www.perl.com</a></p>\n\n}
+);
+
+ok(
+    o(qq{L<crontab(5)>}),
+    qq{<p><a href="${MANURL}5/crontab">crontab(5)</a></p>\n\n}
+);
+
+ok(
+    o(qq{L<Net::Ping/Ping-pong>}),
+    qq{<p><a href="$PERLDOC?Net::Ping#Ping-pong">&quot;Ping-pong&quot; in Net::Ping</a></p>\n\n}
+);
+
+ok(
+    o(qq{L</"Object Methods">}),
+    qq{<p><a href="#Object-Methods">&quot;Object Methods&quot;</a></p>\n\n}
+);
+
+ok(
+    o(qq{L</Object Methods>}),
+    qq{<p><a href="#Object-Methods">&quot;Object Methods&quot;</a></p>\n\n}
+);
+
+ok(
+    o(qq{L<"Object Methods">}),
+    qq{<p><a href="#Object-Methods">&quot;Object Methods&quot;</a></p>\n\n}
+);
+
+ok(
+    o(qq{L<Net::Ping/Ping-E<112>ong>}),
+    qq{<p><a href="$PERLDOC?Net::Ping#Ping-pong">&quot;Ping-pong&quot; in Net::Ping</a></p>\n\n}
+);
+
+ok(
+    o(qq{L<news:comp.lang.perl.misc>}),
+    qq{<p><a href="news:comp.lang.perl.misc">news:comp.lang.perl.misc</a></p>\n\n}
+);
+
+ok(
+    o(qq{L<http://www.perl.org>}),
+    qq{<p><a href="http://www.perl.org">http://www.perl.org</a></p>\n\n}
+);
+
+ok(
+    o(qq{See L<http://www.perl.org>}),
+    qq{<p>See <a href="http://www.perl.org">http://www.perl.org</a></p>\n\n}
+);
+
+ok(
+    o(qq{L<http://www.perl.org/CPAN/authors/id/S/SB/SBURKE/>}),
+    qq{<p><a href="http://www.perl.org/CPAN/authors/id/S/SB/SBURKE/">http://www.perl.org/CPAN/authors/id/S/SB/SBURKE/</a></p>\n\n}
+);
+
+ok(
+    o(qq{L<news:compE<46>lang.perl.misc>}),
+    qq{<p><a href="news:comp.lang.perl.misc">news:comp.lang.perl.misc</a></p>\n\n}
+);
+
+ok(
+    o(qq{L<http://wwwE<46>perl.org>}),
+    qq{<p><a href="http://www.perl.org">http://www.perl.org</a></p>\n\n}
+);
+
+ok(
+    o(qq{L<things|crontab(5)>}),
+    qq{<p><a href="${MANURL}5/crontab">things</a></p>\n\n}
+);
+
+ok(
+    o(qq{L<things|crontab(5)/ENVIRONMENT>}),
+    qq{<p><a href="${MANURL}5/crontab">things</a></p>\n\n}
+);
+
+ok(
+    o(qq{L<Perl Error Messages|perldiag>}),
+    qq{<p><a href="$PERLDOC?perldiag">Perl Error Messages</a></p>\n\n}
+);
+
+ok(
+    o(qq{L<Perl\nError\nMessages|perldiag>}),
+    qq{<p><a href="$PERLDOC?perldiag">Perl Error Messages</a></p>\n\n}
+);
+
+ok(
+    o(qq{L<Perl\nError\t  Messages|perldiag>}),
+    qq{<p><a href="$PERLDOC?perldiag">Perl Error Messages</a></p>\n\n}
+);
+
+ok(
+    o(qq{L<perl.org|http://www.perl.org>}),
+    qq{<p><a href="http://www.perl.org">perl.org</a></p>\n\n}
+);
+
+ok(
+    o(qq{See L<perl.org|http://www.perl.org>}),
+    qq{<p>See <a href="http://www.perl.org">perl.org</a></p>\n\n}
+);
+
 print "# Wrapping up... one for the road...\n";
 ok 1;
 print "# --- Done with ", __FILE__, " --- \n";
index 18e84a8..86e84ee 100644 (file)
@@ -9,7 +9,7 @@ BEGIN {
 
 use strict;
 use Test;
-BEGIN { plan tests => 9 };
+BEGIN { plan tests => 10 };
 
 #use Pod::Simple::Debug (10);
 
@@ -71,7 +71,6 @@ ok(x(
   "heading building"
 );
 
-print x("=over 4\n\n=item one\n\n=item two\n\nHello\n\n=back\n");
 ok(
     x("=over 4\n\n=item one\n\n=item two\n\nHello\n\n=back\n"),
     q{
@@ -90,6 +89,22 @@ ok(
 }
 );
 
+# Check subclass.
+SUBCLASS: {
+    package My::Pod::HTML;
+    use vars '@ISA', '$VERSION';
+    @ISA = ('Pod::Simple::HTML');
+    $VERSION = '0.01';
+    sub do_section { 'howdy' }
+}
+
+ok(
+    My::Pod::HTML->_out(
+        sub{  $_[0]->bare_output(1)  },
+        "=pod\n\n=over\n\n=item Foo\n\n",
+    ),
+    "\n<dl>\n<dt><a name=\"howdy\"\n>Foo</a></dt>\n</dl>\n",
+);
 
 print "# And one for the road...\n";
 ok 1;
index 559754b..ca58e6e 100644 (file)
@@ -13,7 +13,7 @@ my $DEBUG = 0;
 #sub Pod::Simple::HTMLBatch::DEBUG () {5};
 
 use Test;
-BEGIN { plan tests => 9 }
+BEGIN { plan tests => 17 }
 
 require Pod::Simple::HTMLBatch;;
 
@@ -62,13 +62,24 @@ mkdir $outdir, 0777 or die "Can't mkdir $outdir: $!";
 print "# Converting $corpus_dir => $outdir\n" if $DEBUG;
 my $conv = Pod::Simple::HTMLBatch->new;
 $conv->verbose(0);
+$conv->index(1);
 $conv->batch_convert( [$corpus_dir], $outdir );
 ok 1;
 print "# OK, back from converting.\n" if $DEBUG;
 
 my @files;
 use File::Find;
-find( sub { push @files, $File::Find::name; return }, $outdir );
+find( sub {
+      push @files, $File::Find::name;
+      if (/[.]html$/ && $_ !~ /perl|index/) {
+          # Make sure an index was generated.
+          open HTML, $_ or die "Cannot open $_: $!\n";
+          my $html = do { local $/; <HTML> };
+          close HTML;
+          ok $html =~ /<div class='indexgroup'>/;
+      }
+      return;
+}, $outdir );
 
 {
   my $long = ( grep m/zikzik\./i, @files )[0];
@@ -101,8 +112,6 @@ if (my @long = grep { /^[^.]{9,}/ } map { s{^[^/]/}{} } @files) {
     ok 1;
 }
 
-
-
 # use Pod::Simple;
 # *pretty = \&Pod::Simple::BlackBox::pretty;
 
index 4898fe4..3119682 100644 (file)
@@ -41,4 +41,3 @@ ok( $x->_out("\n=over\n\n=item 5.\n\nStuff\n\n=cut\n\nCrunk\nZorp\n\n=item 4.\n\
 print "# Wrapping up... one for the road...\n";
 ok 1;
 print "# --- Done with ", __FILE__, " --- \n";
-
index 8517dda..e0993a5 100644 (file)
@@ -8,7 +8,8 @@ BEGIN {
 
 use strict;
 use lib '../lib';
-use Test::More tests => 35;
+use Test::More tests => 43;
+#use Test::More 'no_plan';
 
 use_ok('Pod::Simple::XHTML') or exit;
 
@@ -17,7 +18,8 @@ isa_ok ($parser, 'Pod::Simple::XHTML');
 
 my $results;
 
-my $PERLDOC = "http://search.cpan.org/perldoc?";
+my $PERLDOC = "http://search.cpan.org/perldoc";
+my $MANURL = "http://man.he.net/man";
 
 initialize($parser, $results);
 $parser->parse_string_document( "=head1 Poit!" );
@@ -403,7 +405,7 @@ $parser->parse_string_document(<<'EOPOD');
 A plain paragraph with a L<Newlines>.
 EOPOD
 is($results, <<"EOHTML", "Link entity in a paragraph");
-<p>A plain paragraph with a <a href="${PERLDOC}Newlines">Newlines</a>.</p>
+<p>A plain paragraph with a <a href="$PERLDOC?Newlines">Newlines</a>.</p>
 
 EOHTML
 
@@ -414,7 +416,7 @@ $parser->parse_string_document(<<'EOPOD');
 A plain paragraph with a L<perlport/Newlines>.
 EOPOD
 is($results, <<"EOHTML", "Link entity in a paragraph");
-<p>A plain paragraph with a <a href="${PERLDOC}perlport/Newlines">&quot;Newlines&quot; in perlport</a>.</p>
+<p>A plain paragraph with a <a href="$PERLDOC?perlport#Newlines">&quot;Newlines&quot; in perlport</a>.</p>
 
 EOHTML
 
@@ -507,7 +509,7 @@ A text paragraph using numeric POD entities: E<60>, E<62>.
 
 EOPOD
 is($results, <<"EOHTML", "Text with numeric entities");
-<p>A text paragraph using numeric POD entities: &#60;, &#62;.</p>
+<p>A text paragraph using numeric POD entities: &lt;, &gt;.</p>
 
 EOHTML
 
@@ -540,6 +542,27 @@ ok $parser->parse_string_document( "=head1 Poit!" ), 'Parse with headers';
 like $results, qr{<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />},
     'Should have proper http-equiv meta tag';
 
+# Test the link generation methods.
+is $parser->resolve_pod_page_link('Net::Ping', 'INSTALL'),
+    "$PERLDOC?Net::Ping#INSTALL",
+    'POD link with fragment';
+is $parser->resolve_pod_page_link('perlpodspec'),
+    "$PERLDOC?perlpodspec", 'Simple POD link';
+is $parser->resolve_pod_page_link(undef, 'SYNOPSIS'), '#SYNOPSIS',
+    'Simple fragment link';
+is $parser->resolve_pod_page_link(undef, 'this that'), '#this-that',
+    'Fragment link with space';
+is $parser->resolve_pod_page_link('perlpod', 'this that'),
+    "$PERLDOC?perlpod#this-that",
+    'POD link with fragment with space';
+
+is $parser->resolve_man_page_link('crontab(5)', 'EXAMPLE CRON FILE'),
+    "${MANURL}5/crontab", 'Man link with fragment';
+is $parser->resolve_man_page_link('crontab(5)'),
+    "${MANURL}5/crontab", 'Man link without fragment';
+is $parser->resolve_man_page_link('crontab'),
+    "${MANURL}1/crontab", 'Man link without section';
+
 ######################################
 
 sub initialize {