Upgrade Pod-Simple to 3.20. This should fix issue 111520.
authorAbigail <abigail@abigail.be>
Sun, 11 Mar 2012 17:05:18 +0000 (18:05 +0100)
committerAbigail <abigail@abigail.be>
Sun, 11 Mar 2012 17:05:18 +0000 (18:05 +0100)
37 files changed:
cpan/Pod-Simple/ChangeLog
cpan/Pod-Simple/README
cpan/Pod-Simple/lib/Pod/Simple.pm
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/cbacks.t
cpan/Pod-Simple/t/emptylists.t
cpan/Pod-Simple/t/fcodes_s.t
cpan/Pod-Simple/t/pulltitl.t
cpan/Pod-Simple/t/search12.t
cpan/Pod-Simple/t/xhtml10.t
cpan/Pod-Simple/t/xhtml15.t

index 79a5a23..2f00dc7 100644 (file)
@@ -1,6 +1,32 @@
 # ChangeLog for Pod::Simple dist
 #---------------------------------------------------------------------------
 
+2012-03-01   David E. Wheeler <david@justatheory.org>
+       * Release 3.20
+
+       Removed use of 'done_testing' in t/xhtml15.t, which was added in
+       v3.19. Thanks to Paul Howarth for the catch.
+
+       Fixed quoting of links in a regular expression Pod::Simple::Text.
+       Reported by Father Chrysostomos.
+
+       Fix test failure on case-insensitive, non-case-preserving file systems
+       (VMS I'm looking at *you*). Patch from Craig A. Berry.
+
+       Pod::Simple::HTML no longer emits "href='#___top'" if a TOC
+       (index) is not output. Patch from Rick Myers.
+
+       Fixed links in the TOC of XHTML output to use IDs derived from encoded
+       text, rather than raw Pod, so that it will link to the ID actually
+       generated for the section. Thanks to Randy Stauner for the report
+       (with test case!) (RT #72544).
+
+       PullParser now throws an exception on an attempt to set a source
+       more than once. Necessary because data from the previous source
+       will be cached, so the new source would be ignored anyway. Create a
+       new PullParser, instead. Thanks to Paul Boldra for the report (RT
+       #74265).
+
 2011-08-23   David E. Wheeler <david@justatheory.org>
        * Release 3.19
 
index a05046e..4608038 100644 (file)
@@ -1,4 +1,4 @@
-=head1 Pod::Simple version 3.19
+=head1 Pod::Simple version 3.20
 
 Pod::Simple is a Perl library for parsing text in the Pod ("plain old
 documentation") markup language that is typically used for writing
index 0dc726d..ad7a19b 100644 (file)
@@ -18,7 +18,7 @@ use vars qw(
 );
 
 @ISA = ('Pod::Simple::BlackBox');
-$VERSION = '3.19';
+$VERSION = '3.20';
 
 @Known_formatting_codes = qw(I B C L E F S X Z); 
 %Known_formatting_codes = map(($_=>1), @Known_formatting_codes);
index a89e5ed..c17cfd0 100644 (file)
@@ -23,7 +23,7 @@ use integer; # vroom!
 use strict;
 use Carp ();
 use vars qw($VERSION );
-$VERSION = '3.19';
+$VERSION = '3.20';
 #use constant DEBUG => 7;
 BEGIN {
   require Pod::Simple;
@@ -924,7 +924,7 @@ sub _ponder_begin {
   $para->[1]{'title'} = $title if ($title);
   $para->[1]{'target'} = $target;  # without any ':'
   $content = $target; # strip off the title
-
+  
   $content =~ s/^:!/!:/s;
   my $neg;  # whether this is a negation-match
   $neg = 1        if $content =~ s/^!//s;
index 35910d6..c97267a 100644 (file)
@@ -9,7 +9,7 @@ use Carp ();
 use Pod::Simple::Methody ();
 use Pod::Simple ();
 use vars qw( @ISA $VERSION );
-$VERSION = '3.19';
+$VERSION = '3.20';
 @ISA = ('Pod::Simple::Methody');
 BEGIN { *DEBUG = defined(&Pod::Simple::DEBUG)
           ? \&Pod::Simple::DEBUG
index e5827ec..5773302 100644 (file)
@@ -3,7 +3,7 @@ require 5;
 package Pod::Simple::Debug;
 use strict;
 use vars qw($VERSION );
-$VERSION = '3.19';
+$VERSION = '3.20';
 
 sub import {
   my($value,$variable);
index a4af8b2..5e2d7eb 100644 (file)
@@ -1,7 +1,7 @@
 
 require 5;
 package Pod::Simple::DumpAsText;
-$VERSION = '3.19';
+$VERSION = '3.20';
 use Pod::Simple ();
 BEGIN {@ISA = ('Pod::Simple')}
 
index 672fb4c..e43422b 100644 (file)
@@ -1,7 +1,7 @@
 
 require 5;
 package Pod::Simple::DumpAsXML;
-$VERSION = '3.19';
+$VERSION = '3.20';
 use Pod::Simple ();
 BEGIN {@ISA = ('Pod::Simple')}
 
index 8e9849a..12fad40 100644 (file)
@@ -10,7 +10,7 @@ use vars qw(
   $Doctype_decl  $Content_decl
 );
 @ISA = ('Pod::Simple::PullParser');
-$VERSION = '3.19';
+$VERSION = '3.20';
 
 BEGIN {
   if(defined &DEBUG) { } # no-op
@@ -491,8 +491,11 @@ sub _do_middle_main_loop {
         $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;
+        if ($tagname =~ m/^head\d$/s) {
+            print $fh "class='u'", $self->index
+                ? " href='#___top' title='click to go to top of document'\n"
+                : "\n";
+        }
         
         if(defined $name) {
           my $esc = esc(  $self->section_name_tidy( $name ) );
index 7e107ee..52e77bc 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.19';
+$VERSION = '3.20';
 @ISA = ();  # Yup, we're NOT a subclass of Pod::Simple::HTML!
 
 # TODO: nocontents stylesheets. Strike some of the color variations?
index 5959e2d..5aa5bc1 100644 (file)
@@ -3,12 +3,12 @@ require 5;
 package Pod::Simple::LinkSection;
   # Based somewhat dimly on Array::Autojoin
 use vars qw($VERSION );
-$VERSION = '3.19';
+$VERSION = '3.20';
 
 use strict;
 use Pod::Simple::BlackBox;
 use vars qw($VERSION );
-$VERSION = '3.19';
+$VERSION = '3.20';
 
 use overload( # So it'll stringify nice
   '""'   => \&Pod::Simple::BlackBox::stringify_lol,
index 11d487d..4113daf 100644 (file)
@@ -4,7 +4,7 @@ package Pod::Simple::Methody;
 use strict;
 use Pod::Simple ();
 use vars qw(@ISA $VERSION);
-$VERSION = '3.19';
+$VERSION = '3.20';
 @ISA = ('Pod::Simple');
 
 # Yes, we could use named variables, but I want this to be impose
index ce41882..e85084a 100644 (file)
@@ -1,7 +1,7 @@
 
 require 5;
 package Pod::Simple::Progress;
-$VERSION = '3.19';
+$VERSION = '3.20';
 use strict;
 
 # Objects of this class are used for noting progress of an
index ba554ad..c9726fd 100644 (file)
@@ -1,7 +1,7 @@
 
 require 5;
 package Pod::Simple::PullParser;
-$VERSION = '3.19';
+$VERSION = '3.20';
 use Pod::Simple ();
 BEGIN {@ISA = ('Pod::Simple')}
 
@@ -231,6 +231,8 @@ sub unget_token {
 sub set_source {
   my $self = shift @_;
   return $self->{'source_fh'} unless @_;
+  Carp::croak("Cannot assign new source to pull parser; create a new instance, instead")
+      if $self->{'source_fh'} || $self->{'source_scalar_ref'} || $self->{'source_arrayref'};
   my $handle;
   if(!defined $_[0]) {
     Carp::croak("Can't use empty-string as a source for set_source");
index 86b948b..a45aba1 100644 (file)
@@ -5,7 +5,7 @@ use Pod::Simple::PullParserToken ();
 use strict;
 use vars qw(@ISA $VERSION);
 @ISA = ('Pod::Simple::PullParserToken');
-$VERSION = '3.19';
+$VERSION = '3.20';
 
 sub new {  # Class->new(tagname);
   my $class = shift;
index e7742b0..e9fbaa2 100644 (file)
@@ -5,7 +5,7 @@ use Pod::Simple::PullParserToken ();
 use strict;
 use vars qw(@ISA $VERSION);
 @ISA = ('Pod::Simple::PullParserToken');
-$VERSION = '3.19';
+$VERSION = '3.20';
 
 sub new {  # Class->new(tagname, optional_attrhash);
   my $class = shift;
index 47f3b3d..34985fd 100644 (file)
@@ -5,7 +5,7 @@ use Pod::Simple::PullParserToken ();
 use strict;
 use vars qw(@ISA $VERSION);
 @ISA = ('Pod::Simple::PullParserToken');
-$VERSION = '3.19';
+$VERSION = '3.20';
 
 sub new {  # Class->new(text);
   my $class = shift;
index 0e6a881..b323ece 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 = '3.19';
+$VERSION = '3.20';
 use strict;
 
 sub new {  # Class->new('type', stuff...);  ## Overridden in derived classes anyway
index 26843db..0d184e3 100644 (file)
@@ -8,7 +8,7 @@ package Pod::Simple::RTF;
 
 use strict;
 use vars qw($VERSION @ISA %Escape $WRAP %Tagmap);
-$VERSION = '3.19';
+$VERSION = '3.20';
 use Pod::Simple::PullParser ();
 BEGIN {@ISA = ('Pod::Simple::PullParser')}
 
index 656df9b..7e507e6 100644 (file)
@@ -4,7 +4,7 @@ package Pod::Simple::Search;
 use strict;
 
 use vars qw($VERSION $MAX_VERSION_WITHIN $SLEEPY);
-$VERSION = '3.19';   ## Current version of this package
+$VERSION = '3.20';   ## Current version of this package
 
 BEGIN { *DEBUG = sub () {0} unless defined &DEBUG; }   # set DEBUG level
 use Carp ();
index 8eb18ac..3671af1 100644 (file)
@@ -6,7 +6,7 @@ use strict;
 use Carp ();
 use Pod::Simple ();
 use vars qw( $ATTR_PAD @ISA $VERSION $SORT_ATTRS);
-$VERSION = '3.19';
+$VERSION = '3.20';
 BEGIN {
   @ISA = ('Pod::Simple');
   *DEBUG = \&Pod::Simple::DEBUG unless defined &DEBUG;
index 532e653..792d1be 100644 (file)
@@ -20,7 +20,7 @@ Pod::Simple::Subclassing -- write a formatter as a Pod::Simple subclass
     my($parser, $element_name, $attr_hash_r) = @_;
     # NOTE: $attr_hash_r is only present when $element_name is "over" or "begin"
     # The remaining code excerpts will mostly ignore this $attr_hash_r, as it is
-    # mostly useless. It is documented where "over-*" and "begin" events are
+    # mostly useless. It is documented where "over-*" and "begin" events are 
     # documented.
     ...
   }
@@ -671,7 +671,7 @@ will produce this event structure:
   </over-block>
 
 Note that the outer C<=over> is a block because it has no C<=item>s but still
-has content: the inner C<=over>. The inner C<=over>, in turn, is completely
+has content: the inner C<=over>. The inner C<=over>, in turn, is completely 
 empty, and is treated as such.
 
 =item events with an element_name of item-bullet
index 21c7a40..3032d0f 100644 (file)
@@ -6,7 +6,7 @@ use Carp ();
 use Pod::Simple::Methody ();
 use Pod::Simple ();
 use vars qw( @ISA $VERSION $FREAKYMODE);
-$VERSION = '3.19';
+$VERSION = '3.20';
 @ISA = ('Pod::Simple::Methody');
 BEGIN { *DEBUG = defined(&Pod::Simple::DEBUG)
           ? \&Pod::Simple::DEBUG
@@ -71,7 +71,7 @@ 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}/;
+            unless $_[0]{'Thispara'} =~ /\b\Q$link->{to}/;
     }
 }
 
index 33be7b2..dea1cde 100644 (file)
@@ -6,7 +6,7 @@ use strict;
 use Carp ();
 use Pod::Simple ();
 use vars qw( @ISA $VERSION );
-$VERSION = '3.19';
+$VERSION = '3.20';
 @ISA = ('Pod::Simple');
 
 sub new {
index 9568611..9f2a224 100644 (file)
@@ -4,7 +4,7 @@ package Pod::Simple::TiedOutFH;
 use Symbol ('gensym');
 use Carp ();
 use vars qw($VERSION );
-$VERSION = '3.19';
+$VERSION = '3.20';
 
 #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
index 9ecf85a..892436d 100644 (file)
@@ -2,7 +2,7 @@
 require 5;
 package Pod::Simple::Transcode;
 use vars qw($VERSION );
-$VERSION = '3.19';
+$VERSION = '3.20';
 
 BEGIN {
   if(defined &DEBUG) {;} # Okay
index 4031ca3..3303090 100644 (file)
@@ -5,7 +5,7 @@ require 5;
 package Pod::Simple::TranscodeDumb;
 use strict;
 use vars qw($VERSION %Supported);
-$VERSION = '3.19';
+$VERSION = '3.20';
 # This module basically pretends it knows how to transcode, except
 #  only for null-transcodings!  We use this when Encode isn't
 #  available.
index de193fa..a66dedd 100644 (file)
@@ -9,7 +9,7 @@ use strict;
 use Pod::Simple;
 require Encode;
 use vars qw($VERSION );
-$VERSION = '3.19';
+$VERSION = '3.20';
 
 sub is_dumb  {0}
 sub is_smart {1}
index 5fc9f2a..9d31db0 100644 (file)
@@ -45,7 +45,7 @@ declare the output character set as UTF-8 before parsing, like so:
 package Pod::Simple::XHTML;
 use strict;
 use vars qw( $VERSION @ISA $HAS_HTML_ENTITIES );
-$VERSION = '3.19';
+$VERSION = '3.20';
 use Pod::Simple::Methody ();
 @ISA = ('Pod::Simple::Methody');
 
@@ -629,7 +629,7 @@ sub resolve_pod_page_link {
     my ($self, $to, $section) = @_;
     return undef unless defined $to || defined $section;
     if (defined $section) {
-        $section = '#' . $self->idify($section, 1);
+        $section = '#' . $self->idify($self->encode_entities($section), 1);
         return $section unless defined $to;
     } else {
         $section = ''
index 61473e3..bbb815a 100644 (file)
@@ -5,7 +5,7 @@ use strict;
 use Carp ();
 use Pod::Simple ();
 use vars qw( $ATTR_PAD @ISA $VERSION $SORT_ATTRS);
-$VERSION = '3.19';
+$VERSION = '3.20';
 BEGIN {
   @ISA = ('Pod::Simple');
   *DEBUG = \&Pod::Simple::DEBUG unless defined &DEBUG;
index a7fa4a7..1d639bb 100644 (file)
@@ -44,7 +44,7 @@ while(@from) {
      $_[0]->code_handler(sub { $more .= $_[1] . ":" . $_[0] . "\n"       } );
      $_[0]->cut_handler( sub { $more .= "~" . $_[1] . ":" .  $_[0]. "\n" } );
      $_[0]->pod_handler( sub { $more .= "+" . $_[1] . ":" .  $_[0]. "\n" } );
-     $_[0]->whiteline_handler(
+     $_[0]->whiteline_handler( 
                          sub { $more .= "=" . $_[1] . ":" .  $_[0]. "\n" } );
     } => join "\n",
     " ", # space outside pod
index eb23e01..619cd63 100644 (file)
@@ -66,3 +66,4 @@ ok( $x->_out(\&on, $pod),
 print "# Wrapping up... one for the road...\n";
 ok 1;
 print "# --- Done with ", __FILE__, " --- \n";
+
index 684ee77..9777565 100644 (file)
@@ -66,7 +66,7 @@ skip( $unless_ascii,
     qq{=pod\n\nI like S<L</"bric-a-brac a gogo">>.\n},
     qq{=pod\n\nI like L<"bric-a-bracE<160>aE<160>gogo"|/"bric-a-brac a gogo">.\n},
 ));
-&ok(
+&ok( 
   map {my $z = $_; $z =~ s/raw=".+?" //g; $z }
   $x->_duo( sub { $_[0]->nbsp_for_S(1) },
     qq{=pod\n\nI like S<L<Stuff like that|"bric-a-brac a gogo">>.\n},
index c50c932..22934f5 100644 (file)
@@ -7,7 +7,7 @@ BEGIN {
 
 use strict;
 use Test;
-BEGIN { plan tests => 114 };
+BEGIN { plan tests => 116 };
 
 #use Pod::Simple::Debug (5);
 
@@ -44,6 +44,13 @@ ok( $t = $p->get_token);
 ok( $t && $t->type, 'text');
 ok( $t && $t->type eq 'text' && $t->text, 'NAME' );
 
+DIE: {
+    # Make sure we die.
+    local $@;
+    eval { $p->set_source(\'=head1 foo') };
+    ok $@;
+    ok $@ =~ /\QCannot assign new source to pull parser; create a new instance, instead/;
+}
 }
 
 ###########################################################################
index 709beb2..e5bf492 100644 (file)
@@ -87,13 +87,13 @@ $p =~ s/^/#  /mg;
 print $p;
 
 {
-my $names = join "|", sort values %$where2name;
-ok lc($names), lc("Suzzle");
+my $names = lc join "|", sort values %$where2name;
+ok $names, "suzzle";
 }
 
 {
-my $names = join "|", sort keys %$name2where;
-ok lc($names), lc("Suzzle");
+my $names = lc join "|", sort keys %$name2where;
+ok $names, "suzzle";
 }
 
 ok( ($name2where->{'Vliff'} || 'huh???'), 'huh???');
index 6f54dd4..56ef68c 100644 (file)
@@ -8,7 +8,7 @@ BEGIN {
 
 use strict;
 use lib '../lib';
-use Test::More tests => 56;
+use Test::More tests => 58;
 #use Test::More 'no_plan';
 
 use_ok('Pod::Simple::XHTML') or exit;
@@ -653,6 +653,38 @@ is $results, <<'EOF', 'Do not anchor =item directives';
 </ol>
 
 EOF
+
+$ENV{FOO}= 1;
+
+initialize($parser, $results);
+ok $parser->parse_string_document( <<'EOPOD' ), 'Parse POD';
+=head1 Foo
+
+Test links from perlpodspec: L</"About LE<lt>...E<gt> Codes">
+
+=head1 About LE<lt>...E<gt> Codes
+
+Here it is
+EOPOD
+
+my $id = 'About-L...-Codes'; # what should this be?
+
+is $results, <<EOF, 'anchor and h1 use same section id for complex sections';
+<ul id="index">
+  <li><a href="#Foo">Foo</a></li>
+  <li><a href="#$id">About L&lt;...&gt; Codes</a></li>
+</ul>
+
+<h1 id="Foo">Foo</h1>
+
+<p>Test links from perlpodspec: <a href="#$id">&quot;About L&lt;...&gt; Codes&quot;</a></p>
+
+<h1 id="$id">About L&lt;...&gt; Codes</h1>
+
+<p>Here it is</p>
+
+EOF
+
 sub initialize {
        $_[0] = Pod::Simple::XHTML->new;
         $_[0]->html_header('');
index 2f1bc5e..45cde78 100644 (file)
@@ -5,8 +5,7 @@
 
 use strict;
 use warnings;
-use lib 'lib';
-use Test::More;
+use Test::More tests => 4;
 
 use_ok('Pod::Simple::XHTML') or exit;
 
@@ -27,8 +26,6 @@ like $results, qr/ href="$style" /, 'CSS is correct when <link> is passed in';
 #note('These methods are called when XHTML is used by HtmlBatch');
 can_ok $parser, qw/batch_mode_page_object_init html_header_after_title/;
 
-done_testing;
-
 sub initialize {
     $parser = Pod::Simple::XHTML->new;
     $parser->index(1);