summaryrefslogtreecommitdiff
path: root/cpan
diff options
context:
space:
mode:
Diffstat (limited to 'cpan')
-rw-r--r--cpan/Pod-Simple/ChangeLog35
-rw-r--r--cpan/Pod-Simple/README2
-rw-r--r--cpan/Pod-Simple/lib/Pod/Simple.pm15
-rw-r--r--cpan/Pod-Simple/lib/Pod/Simple/BlackBox.pm85
-rw-r--r--cpan/Pod-Simple/lib/Pod/Simple/Checker.pm2
-rw-r--r--cpan/Pod-Simple/lib/Pod/Simple/Debug.pm2
-rw-r--r--cpan/Pod-Simple/lib/Pod/Simple/DumpAsText.pm2
-rw-r--r--cpan/Pod-Simple/lib/Pod/Simple/DumpAsXML.pm2
-rw-r--r--cpan/Pod-Simple/lib/Pod/Simple/HTML.pm2
-rw-r--r--cpan/Pod-Simple/lib/Pod/Simple/HTMLBatch.pm2
-rw-r--r--cpan/Pod-Simple/lib/Pod/Simple/LinkSection.pm4
-rw-r--r--cpan/Pod-Simple/lib/Pod/Simple/Methody.pm4
-rw-r--r--cpan/Pod-Simple/lib/Pod/Simple/Progress.pm2
-rw-r--r--cpan/Pod-Simple/lib/Pod/Simple/PullParser.pm2
-rw-r--r--cpan/Pod-Simple/lib/Pod/Simple/PullParserEndToken.pm2
-rw-r--r--cpan/Pod-Simple/lib/Pod/Simple/PullParserStartToken.pm2
-rw-r--r--cpan/Pod-Simple/lib/Pod/Simple/PullParserTextToken.pm2
-rw-r--r--cpan/Pod-Simple/lib/Pod/Simple/PullParserToken.pm2
-rw-r--r--cpan/Pod-Simple/lib/Pod/Simple/RTF.pm2
-rw-r--r--cpan/Pod-Simple/lib/Pod/Simple/Search.pm2
-rw-r--r--cpan/Pod-Simple/lib/Pod/Simple/SimpleTree.pm2
-rw-r--r--cpan/Pod-Simple/lib/Pod/Simple/Subclassing.pod155
-rw-r--r--cpan/Pod-Simple/lib/Pod/Simple/Text.pm2
-rw-r--r--cpan/Pod-Simple/lib/Pod/Simple/TextContent.pm2
-rw-r--r--cpan/Pod-Simple/lib/Pod/Simple/TiedOutFH.pm2
-rw-r--r--cpan/Pod-Simple/lib/Pod/Simple/Transcode.pm2
-rw-r--r--cpan/Pod-Simple/lib/Pod/Simple/TranscodeDumb.pm2
-rw-r--r--cpan/Pod-Simple/lib/Pod/Simple/TranscodeSmart.pm2
-rw-r--r--cpan/Pod-Simple/lib/Pod/Simple/XHTML.pm18
-rw-r--r--cpan/Pod-Simple/lib/Pod/Simple/XMLOutStream.pm2
-rw-r--r--cpan/Pod-Simple/t/cbacks.t30
-rw-r--r--cpan/Pod-Simple/t/emptylists.t68
-rw-r--r--cpan/Pod-Simple/t/eol.t107
-rw-r--r--cpan/Pod-Simple/t/eol2.t104
-rw-r--r--cpan/Pod-Simple/t/fake-closers.t71
-rw-r--r--cpan/Pod-Simple/t/fcodes_l.t194
-rw-r--r--cpan/Pod-Simple/t/fcodes_s.t8
-rw-r--r--cpan/Pod-Simple/t/search12.t13
-rw-r--r--cpan/Pod-Simple/t/x_nixer.t4
-rw-r--r--cpan/Pod-Simple/t/xhtml01.t2
-rw-r--r--cpan/Pod-Simple/t/xhtml15.t37
41 files changed, 810 insertions, 190 deletions
diff --git a/cpan/Pod-Simple/ChangeLog b/cpan/Pod-Simple/ChangeLog
index 3cc2442d78..79a5a23cf2 100644
--- a/cpan/Pod-Simple/ChangeLog
+++ b/cpan/Pod-Simple/ChangeLog
@@ -1,6 +1,41 @@
# ChangeLog for Pod::Simple dist
#---------------------------------------------------------------------------
+2011-08-23 David E. Wheeler <david@justatheory.org>
+ * Release 3.19
+
+ Fixed occasional test failure when tests are run in parallel
+ (HARNESS_OPTIONS=j6:c). Thanks to Alexei Znamensky for the report and
+ Marc Green for the fix.
+
+ Added "pod_handler" option. This is a callback that can be used to
+ inspect the content on a "=pod" line. Marc Green/Google Summer of
+ Code.
+
+ Added tests for proper line-ending parsing from the previous
+ release. The tests were in the repository, but didn't make it into
+ the MANIFEST or, therefore, the release. Reported by Marc Green.
+
+ Added the "parse_empty_lists" option. When enabled, Pod::Simple
+ will recognize empty lists (that is, a blocks with '=over' and
+ '=back' but nothing in between). Disabled by default. Marc
+ Green/Google Summer of Code.
+
+ Added the "whiteline_handler" attribute. It's much like
+ "code_handler", "cut_handler", and "pod_handler", except it's
+ triggered on lines that contain only whitespace characters. Marc
+ Green/Google Summer of Code.
+
+ Added "raw" attribute to L<> treelet that contains the L<>'s raw
+ contents. Marc Green/Google Summer of Code.
+
+ Pod directives autoclosed by Pod::Simple are now denoted as such
+ by the new "fake_closer" attribue. Marc Green/Google Summer of
+ Code.
+
+ Fixed incompatibility with Pod::Simple::HTMLBatch in
+ Pod::Simple::XHTML. Patch by Eric Johnson.
+
2011-07-16 David E. Wheeler <david@justatheory.org>
* Release 3.18
diff --git a/cpan/Pod-Simple/README b/cpan/Pod-Simple/README
index 47f34ec2d6..a05046eef6 100644
--- a/cpan/Pod-Simple/README
+++ b/cpan/Pod-Simple/README
@@ -1,4 +1,4 @@
-=head1 Pod::Simple version 3.18
+=head1 Pod::Simple version 3.19
Pod::Simple is a Perl library for parsing text in the Pod ("plain old
documentation") markup language that is typically used for writing
diff --git a/cpan/Pod-Simple/lib/Pod/Simple.pm b/cpan/Pod-Simple/lib/Pod/Simple.pm
index d75c761bde..0dc726d8ed 100644
--- a/cpan/Pod-Simple/lib/Pod/Simple.pm
+++ b/cpan/Pod-Simple/lib/Pod/Simple.pm
@@ -18,7 +18,7 @@ use vars qw(
);
@ISA = ('Pod::Simple::BlackBox');
-$VERSION = '3.18';
+$VERSION = '3.19';
@Known_formatting_codes = qw(I B C L E F S X Z);
%Known_formatting_codes = map(($_=>1), @Known_formatting_codes);
@@ -93,10 +93,15 @@ __PACKAGE__->_accessorize(
'codes_in_verbatim', # for PseudoPod extensions
'code_handler', # coderef to call when a code (non-pod) line is seen
- 'cut_handler', # coderef to call when a =cut line is seen
+ 'cut_handler', # ... when a =cut line is seen
+ 'pod_handler', # ... when a =pod line is seen
+ 'whiteline_handler', # ... when a line with only whitespace is seen
#Called like:
# $code_handler->($line, $self->{'line_count'}, $self) if $code_handler;
# $cut_handler->($line, $self->{'line_count'}, $self) if $cut_handler;
+ # $pod_handler->($line, $self->{'line_count'}, $self) if $pod_handler;
+ # $wl_handler->($line, $self->{'line_count'}, $self) if $wl_handler;
+ 'parse_empty_lists', # whether to acknowledge empty =over/=back blocks
);
@@ -975,7 +980,7 @@ sub _treat_Zs { # Nix Z<...>'s
# possibly a man page name (like "crontab(5)" is).
#
-############# Not implemented, I guess.
+############# The "raw" attribute that is already there.
# Sixth:
# The raw original L<...> content, before text is split on "|", "/", etc,
# and before E<...> codes are expanded.
@@ -1345,6 +1350,10 @@ sub _treat_Es {
DEBUG > 1 and print "Ogling E<$content>\n";
+ # XXX E<>'s contents *should* be a valid char in the scope of the current
+ # =encoding directive. Defaults to iso-8859-1, I believe. Fix this in the
+ # future sometime.
+
$charnum = Pod::Escapes::e2charnum($content);
DEBUG > 1 and print " Considering E<$content> with char ",
defined($charnum) ? $charnum : "undef", ".\n";
diff --git a/cpan/Pod-Simple/lib/Pod/Simple/BlackBox.pm b/cpan/Pod-Simple/lib/Pod/Simple/BlackBox.pm
index d8dfce4411..a89e5ed19c 100644
--- a/cpan/Pod-Simple/lib/Pod/Simple/BlackBox.pm
+++ b/cpan/Pod-Simple/lib/Pod/Simple/BlackBox.pm
@@ -23,7 +23,7 @@ use integer; # vroom!
use strict;
use Carp ();
use vars qw($VERSION );
-$VERSION = '3.18';
+$VERSION = '3.19';
#use constant DEBUG => 7;
BEGIN {
require Pod::Simple;
@@ -42,6 +42,7 @@ sub parse_lines { # Usage: $parser->parse_lines(@lines)
my $code_handler = $self->{'code_handler'};
my $cut_handler = $self->{'cut_handler'};
+ my $wl_handler = $self->{'whiteline_handler'};
$self->{'line_count'} ||= 0;
my $scratch;
@@ -191,7 +192,12 @@ sub parse_lines { # Usage: $parser->parse_lines(@lines)
# TODO: add to docs: Note: this may cause cuts to be processed out
# of order relative to pods, but in order relative to code.
- } elsif($line =~ m/^\s*$/s) { # it's a blank line
+ } elsif($line =~ m/^(\s*)$/s) { # it's a blank line
+ if (defined $1 and $1 =~ /[^\S\r\n]/) { # it's a white line
+ $wl_handler->(map $_, $line, $self->{'line_count'}, $self)
+ if $wl_handler;
+ }
+
if(!$self->{'start_of_pod_block'} and @$paras and $paras->[-1][0] eq '~Verbatim') {
DEBUG > 1 and print "Saving blank line at line ${$self}{'line_count'}\n";
push @{$paras->[-1]}, $line;
@@ -592,7 +598,8 @@ sub _ponder_paragraph_buffer {
if($para_type eq '=item') {
my $over;
- unless(@$curr_open and ($over = $curr_open->[-1])->[0] eq '=over') {
+ unless(@$curr_open and
+ $over = (grep { $_->[0] eq '=over' } @$curr_open)[-1]) {
$self->whine(
$para->[1]{'start_line'},
"'=item' outside of any '=over'"
@@ -983,7 +990,7 @@ sub _ponder_end {
$content =~ s/^\s+//s;
$content =~ s/\s+$//s;
DEBUG and print "Ogling '=end $content' directive\n";
-
+
unless(length($content)) {
$self->whine(
$para->[1]{'start_line'},
@@ -1039,7 +1046,7 @@ sub _ponder_end {
# what's that for?
$self->{'content_seen'} ||= 1;
- $self->_handle_element_end( my $scratch = 'for' );
+ $self->_handle_element_end( my $scratch = 'for', $para->[1]);
}
DEBUG > 1 and print "Popping $curr_open->[-1][0] $curr_open->[-1][1]{'target'} because of =end $content\n";
pop @$curr_open;
@@ -1092,7 +1099,18 @@ sub _ponder_pod {
"=pod directives shouldn't be over one line long! Ignoring all "
. (@$para - 2) . " lines of content"
) if @$para > 3;
- # Content is always ignored.
+
+ # Content ignored unless 'pod_handler' is set
+ if (my $pod_handler = $self->{'pod_handler'}) {
+ my ($line_num, $line) = map $_, $para->[1]{'start_line'}, $para->[2];
+ $line = $line eq '' ? "=pod" : "=pod $line"; # imitate cut_handler output
+ $pod_handler->($line, $line_num, $self);
+ }
+
+ # The surrounding methods set content_seen, so let us remain consistent.
+ # I do not know why it was not here before -- should it not be here?
+ # $self->{'content_seen'} ||= 1;
+
return;
}
@@ -1105,10 +1123,13 @@ sub _ponder_over {
$list_type = $self->_get_initial_item_type($paras->[0]);
} elsif($paras->[0][0] eq '=back') {
- # Ignore empty lists. TODO: make this an option?
- shift @$paras;
- return 1;
-
+ # Ignore empty lists by default
+ if ($self->{'parse_empty_lists'}) {
+ $list_type = 'empty';
+ } else {
+ shift @$paras;
+ return 1;
+ }
} elsif($paras->[0][0] eq '~end') {
$self->whine(
$para->[1]{'start_line'},
@@ -1169,7 +1190,7 @@ sub _ponder_back {
#my $over = pop @$curr_open;
$self->{'content_seen'} ||= 1;
$self->_handle_element_end( my $scratch =
- 'over-' . ( (pop @$curr_open)->[1]{'~type'} )
+ 'over-' . ( (pop @$curr_open)->[1]{'~type'} ), $para->[1]
);
} else {
DEBUG > 1 and print "=back found without a matching =over. Stack: (",
@@ -1185,7 +1206,8 @@ sub _ponder_back {
sub _ponder_item {
my ($self,$para,$curr_open,$paras) = @_;
my $over;
- unless(@$curr_open and ($over = $curr_open->[-1])->[0] eq '=over') {
+ unless(@$curr_open and
+ $over = (grep { $_->[0] eq '=over' } @$curr_open)[-1]) {
$self->whine(
$para->[1]{'start_line'},
"'=item' outside of any '=over'"
@@ -1471,7 +1493,9 @@ sub _closers_for_all_curr_open {
$copy[-1] = '' unless defined $copy[-1];
# since =over's don't have targets
}
-
+
+ $copy[1]{'fake-closer'} = 1;
+
DEBUG and print "Queuing up fake-o event: ", pretty(\@copy), "\n";
unshift @closers, \@copy;
}
@@ -1638,6 +1662,10 @@ sub _treelet_from_formatting_codes {
my @stack;
my @lineage = ($treelet);
+ my $raw = ''; # raw content of L<> fcode before splitting/processing
+ # XXX 'raw' is not 100% accurate: all surrounding whitespace is condensed
+ # into just 1 ' '. Is this the regex's doing or 'raw's?
+ my $inL = 0;
DEBUG > 4 and print "Paragraph:\n$para\n\n";
@@ -1709,7 +1737,13 @@ sub _treelet_from_formatting_codes {
}
push @lineage, [ substr($1,0,1), {}, ]; # new node object
push @{ $lineage[-2] }, $lineage[-1];
-
+ if ('L' eq substr($1,0,1)) {
+ $raw = $inL ? $raw.$1 : ''; # reset raw content accumulator
+ $inL = 1;
+ } else {
+ $raw .= $1 if $inL;
+ }
+
} elsif(defined $4) {
DEBUG > 3 and print "Found apparent complex end-text code \"$3$4\"\n";
# This is where it gets messy...
@@ -1743,6 +1777,14 @@ sub _treelet_from_formatting_codes {
pop @stack;
pop @lineage;
+
+ unless (@stack) { # not in an L if there are no open fcodes
+ $inL = 0;
+ if (ref $lineage[-1][-1] && $lineage[-1][-1][0] eq 'L') {
+ $lineage[-1][-1][1]{'raw'} = $raw
+ }
+ }
+ $raw .= $3.$4 if $inL;
} elsif(defined $5) {
DEBUG > 3 and print "Found apparent simple end-text code \"$5\"\n";
@@ -1764,10 +1806,21 @@ sub _treelet_from_formatting_codes {
push @{ $lineage[-1] }, $5;
}
+ unless (@stack) { # not in an L if there are no open fcodes
+ $inL = 0;
+ if (ref $lineage[-1][-1] && $lineage[-1][-1][0] eq 'L') {
+ $lineage[-1][-1][1]{'raw'} = $raw
+ }
+ }
+ $raw .= $5 if $inL;
+
} elsif(defined $6) {
DEBUG > 3 and print "Found stuff \"$6\"\n";
push @{ $lineage[-1] }, $6;
-
+ $raw .= $6 if $inL;
+ # XXX does not capture multiplace whitespaces -- 'raw' ends up with
+ # at most 1 leading/trailing whitespace, why not all of it?
+
} else {
# should never ever ever ever happen
DEBUG and print "AYYAYAAAAA at line ", __LINE__, "\n";
@@ -1795,7 +1848,7 @@ sub _treelet_from_formatting_codes {
"Unterminated $x sequence",
);
}
-
+
return $treelet;
}
diff --git a/cpan/Pod-Simple/lib/Pod/Simple/Checker.pm b/cpan/Pod-Simple/lib/Pod/Simple/Checker.pm
index 7f28f1e31c..35910d6bc1 100644
--- a/cpan/Pod-Simple/lib/Pod/Simple/Checker.pm
+++ b/cpan/Pod-Simple/lib/Pod/Simple/Checker.pm
@@ -9,7 +9,7 @@ use Carp ();
use Pod::Simple::Methody ();
use Pod::Simple ();
use vars qw( @ISA $VERSION );
-$VERSION = '3.18';
+$VERSION = '3.19';
@ISA = ('Pod::Simple::Methody');
BEGIN { *DEBUG = defined(&Pod::Simple::DEBUG)
? \&Pod::Simple::DEBUG
diff --git a/cpan/Pod-Simple/lib/Pod/Simple/Debug.pm b/cpan/Pod-Simple/lib/Pod/Simple/Debug.pm
index 037900d3db..e5827ec0ad 100644
--- a/cpan/Pod-Simple/lib/Pod/Simple/Debug.pm
+++ b/cpan/Pod-Simple/lib/Pod/Simple/Debug.pm
@@ -3,7 +3,7 @@ require 5;
package Pod::Simple::Debug;
use strict;
use vars qw($VERSION );
-$VERSION = '3.18';
+$VERSION = '3.19';
sub import {
my($value,$variable);
diff --git a/cpan/Pod-Simple/lib/Pod/Simple/DumpAsText.pm b/cpan/Pod-Simple/lib/Pod/Simple/DumpAsText.pm
index 42e8d7aef1..a4af8b25e2 100644
--- a/cpan/Pod-Simple/lib/Pod/Simple/DumpAsText.pm
+++ b/cpan/Pod-Simple/lib/Pod/Simple/DumpAsText.pm
@@ -1,7 +1,7 @@
require 5;
package Pod::Simple::DumpAsText;
-$VERSION = '3.18';
+$VERSION = '3.19';
use Pod::Simple ();
BEGIN {@ISA = ('Pod::Simple')}
diff --git a/cpan/Pod-Simple/lib/Pod/Simple/DumpAsXML.pm b/cpan/Pod-Simple/lib/Pod/Simple/DumpAsXML.pm
index 9fb039d6fb..672fb4ceca 100644
--- a/cpan/Pod-Simple/lib/Pod/Simple/DumpAsXML.pm
+++ b/cpan/Pod-Simple/lib/Pod/Simple/DumpAsXML.pm
@@ -1,7 +1,7 @@
require 5;
package Pod::Simple::DumpAsXML;
-$VERSION = '3.18';
+$VERSION = '3.19';
use Pod::Simple ();
BEGIN {@ISA = ('Pod::Simple')}
diff --git a/cpan/Pod-Simple/lib/Pod/Simple/HTML.pm b/cpan/Pod-Simple/lib/Pod/Simple/HTML.pm
index b1063bb80b..8e9849a2db 100644
--- a/cpan/Pod-Simple/lib/Pod/Simple/HTML.pm
+++ b/cpan/Pod-Simple/lib/Pod/Simple/HTML.pm
@@ -10,7 +10,7 @@ use vars qw(
$Doctype_decl $Content_decl
);
@ISA = ('Pod::Simple::PullParser');
-$VERSION = '3.18';
+$VERSION = '3.19';
BEGIN {
if(defined &DEBUG) { } # no-op
diff --git a/cpan/Pod-Simple/lib/Pod/Simple/HTMLBatch.pm b/cpan/Pod-Simple/lib/Pod/Simple/HTMLBatch.pm
index 49ffd0cc45..7e107eed47 100644
--- a/cpan/Pod-Simple/lib/Pod/Simple/HTMLBatch.pm
+++ b/cpan/Pod-Simple/lib/Pod/Simple/HTMLBatch.pm
@@ -5,7 +5,7 @@ use strict;
use vars qw( $VERSION $HTML_RENDER_CLASS $HTML_EXTENSION
$CSS $JAVASCRIPT $SLEEPY $SEARCH_CLASS @ISA
);
-$VERSION = '3.18';
+$VERSION = '3.19';
@ISA = (); # Yup, we're NOT a subclass of Pod::Simple::HTML!
# TODO: nocontents stylesheets. Strike some of the color variations?
diff --git a/cpan/Pod-Simple/lib/Pod/Simple/LinkSection.pm b/cpan/Pod-Simple/lib/Pod/Simple/LinkSection.pm
index e04a503f61..5959e2d4a7 100644
--- a/cpan/Pod-Simple/lib/Pod/Simple/LinkSection.pm
+++ b/cpan/Pod-Simple/lib/Pod/Simple/LinkSection.pm
@@ -3,12 +3,12 @@ require 5;
package Pod::Simple::LinkSection;
# Based somewhat dimly on Array::Autojoin
use vars qw($VERSION );
-$VERSION = '3.18';
+$VERSION = '3.19';
use strict;
use Pod::Simple::BlackBox;
use vars qw($VERSION );
-$VERSION = '3.18';
+$VERSION = '3.19';
use overload( # So it'll stringify nice
'""' => \&Pod::Simple::BlackBox::stringify_lol,
diff --git a/cpan/Pod-Simple/lib/Pod/Simple/Methody.pm b/cpan/Pod-Simple/lib/Pod/Simple/Methody.pm
index 6733394b42..11d487dda0 100644
--- a/cpan/Pod-Simple/lib/Pod/Simple/Methody.pm
+++ b/cpan/Pod-Simple/lib/Pod/Simple/Methody.pm
@@ -4,7 +4,7 @@ package Pod::Simple::Methody;
use strict;
use Pod::Simple ();
use vars qw(@ISA $VERSION);
-$VERSION = '3.18';
+$VERSION = '3.19';
@ISA = ('Pod::Simple');
# Yes, we could use named variables, but I want this to be impose
@@ -32,7 +32,7 @@ sub _handle_element_end {
( $_[0]->can( 'end_' . $_[1] )
|| return
)->(
- $_[0]
+ $_[0], $_[2]
);
}
diff --git a/cpan/Pod-Simple/lib/Pod/Simple/Progress.pm b/cpan/Pod-Simple/lib/Pod/Simple/Progress.pm
index 9afa1ab9fe..ce418823a5 100644
--- a/cpan/Pod-Simple/lib/Pod/Simple/Progress.pm
+++ b/cpan/Pod-Simple/lib/Pod/Simple/Progress.pm
@@ -1,7 +1,7 @@
require 5;
package Pod::Simple::Progress;
-$VERSION = '3.18';
+$VERSION = '3.19';
use strict;
# Objects of this class are used for noting progress of an
diff --git a/cpan/Pod-Simple/lib/Pod/Simple/PullParser.pm b/cpan/Pod-Simple/lib/Pod/Simple/PullParser.pm
index dd2b776f62..ba554ad89e 100644
--- a/cpan/Pod-Simple/lib/Pod/Simple/PullParser.pm
+++ b/cpan/Pod-Simple/lib/Pod/Simple/PullParser.pm
@@ -1,7 +1,7 @@
require 5;
package Pod::Simple::PullParser;
-$VERSION = '3.18';
+$VERSION = '3.19';
use Pod::Simple ();
BEGIN {@ISA = ('Pod::Simple')}
diff --git a/cpan/Pod-Simple/lib/Pod/Simple/PullParserEndToken.pm b/cpan/Pod-Simple/lib/Pod/Simple/PullParserEndToken.pm
index a14fced9e0..86b948b6b6 100644
--- a/cpan/Pod-Simple/lib/Pod/Simple/PullParserEndToken.pm
+++ b/cpan/Pod-Simple/lib/Pod/Simple/PullParserEndToken.pm
@@ -5,7 +5,7 @@ use Pod::Simple::PullParserToken ();
use strict;
use vars qw(@ISA $VERSION);
@ISA = ('Pod::Simple::PullParserToken');
-$VERSION = '3.18';
+$VERSION = '3.19';
sub new { # Class->new(tagname);
my $class = shift;
diff --git a/cpan/Pod-Simple/lib/Pod/Simple/PullParserStartToken.pm b/cpan/Pod-Simple/lib/Pod/Simple/PullParserStartToken.pm
index 8f5bd59bdc..e7742b0f6f 100644
--- a/cpan/Pod-Simple/lib/Pod/Simple/PullParserStartToken.pm
+++ b/cpan/Pod-Simple/lib/Pod/Simple/PullParserStartToken.pm
@@ -5,7 +5,7 @@ use Pod::Simple::PullParserToken ();
use strict;
use vars qw(@ISA $VERSION);
@ISA = ('Pod::Simple::PullParserToken');
-$VERSION = '3.18';
+$VERSION = '3.19';
sub new { # Class->new(tagname, optional_attrhash);
my $class = shift;
diff --git a/cpan/Pod-Simple/lib/Pod/Simple/PullParserTextToken.pm b/cpan/Pod-Simple/lib/Pod/Simple/PullParserTextToken.pm
index c376ead23d..47f3b3de0c 100644
--- a/cpan/Pod-Simple/lib/Pod/Simple/PullParserTextToken.pm
+++ b/cpan/Pod-Simple/lib/Pod/Simple/PullParserTextToken.pm
@@ -5,7 +5,7 @@ use Pod::Simple::PullParserToken ();
use strict;
use vars qw(@ISA $VERSION);
@ISA = ('Pod::Simple::PullParserToken');
-$VERSION = '3.18';
+$VERSION = '3.19';
sub new { # Class->new(text);
my $class = shift;
diff --git a/cpan/Pod-Simple/lib/Pod/Simple/PullParserToken.pm b/cpan/Pod-Simple/lib/Pod/Simple/PullParserToken.pm
index 56b58186e2..0e6a8814f0 100644
--- a/cpan/Pod-Simple/lib/Pod/Simple/PullParserToken.pm
+++ b/cpan/Pod-Simple/lib/Pod/Simple/PullParserToken.pm
@@ -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.18';
+$VERSION = '3.19';
use strict;
sub new { # Class->new('type', stuff...); ## Overridden in derived classes anyway
diff --git a/cpan/Pod-Simple/lib/Pod/Simple/RTF.pm b/cpan/Pod-Simple/lib/Pod/Simple/RTF.pm
index 19dc759ea9..26843db410 100644
--- a/cpan/Pod-Simple/lib/Pod/Simple/RTF.pm
+++ b/cpan/Pod-Simple/lib/Pod/Simple/RTF.pm
@@ -8,7 +8,7 @@ package Pod::Simple::RTF;
use strict;
use vars qw($VERSION @ISA %Escape $WRAP %Tagmap);
-$VERSION = '3.18';
+$VERSION = '3.19';
use Pod::Simple::PullParser ();
BEGIN {@ISA = ('Pod::Simple::PullParser')}
diff --git a/cpan/Pod-Simple/lib/Pod/Simple/Search.pm b/cpan/Pod-Simple/lib/Pod/Simple/Search.pm
index 823c6528fc..656df9b08d 100644
--- a/cpan/Pod-Simple/lib/Pod/Simple/Search.pm
+++ b/cpan/Pod-Simple/lib/Pod/Simple/Search.pm
@@ -4,7 +4,7 @@ package Pod::Simple::Search;
use strict;
use vars qw($VERSION $MAX_VERSION_WITHIN $SLEEPY);
-$VERSION = '3.18'; ## Current version of this package
+$VERSION = '3.19'; ## Current version of this package
BEGIN { *DEBUG = sub () {0} unless defined &DEBUG; } # set DEBUG level
use Carp ();
diff --git a/cpan/Pod-Simple/lib/Pod/Simple/SimpleTree.pm b/cpan/Pod-Simple/lib/Pod/Simple/SimpleTree.pm
index fdea4a19b3..8eb18accbb 100644
--- a/cpan/Pod-Simple/lib/Pod/Simple/SimpleTree.pm
+++ b/cpan/Pod-Simple/lib/Pod/Simple/SimpleTree.pm
@@ -6,7 +6,7 @@ use strict;
use Carp ();
use Pod::Simple ();
use vars qw( $ATTR_PAD @ISA $VERSION $SORT_ATTRS);
-$VERSION = '3.18';
+$VERSION = '3.19';
BEGIN {
@ISA = ('Pod::Simple');
*DEBUG = \&Pod::Simple::DEBUG unless defined &DEBUG;
diff --git a/cpan/Pod-Simple/lib/Pod/Simple/Subclassing.pod b/cpan/Pod-Simple/lib/Pod/Simple/Subclassing.pod
index 793c790730..532e653a46 100644
--- a/cpan/Pod-Simple/lib/Pod/Simple/Subclassing.pod
+++ b/cpan/Pod-Simple/lib/Pod/Simple/Subclassing.pod
@@ -17,7 +17,11 @@ Pod::Simple::Subclassing -- write a formatter as a Pod::Simple subclass
}
sub _handle_element_end {
- my($parser, $element_name) = @_;
+ 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
+ # documented.
...
}
@@ -214,7 +218,7 @@ There are, at first glance, three kinds of L links: URL, man, and pod.
When a LE<lt>I<some_url>E<gt> code is parsed, it produces this event
structure:
- <L content-implicit="yes" to="that_url" type="url">
+ <L content-implicit="yes" raw="that_url" to="that_url" type="url">
that_url
</L>
@@ -227,14 +231,14 @@ For example, this Pod source:
produces this event structure:
- <L content-implicit="yes" to="http://www.perl.com/CPAN/authors/" type="url">
+ <L content-implicit="yes" raw="http://www.perl.com/CPAN/authors/" to="http://www.perl.com/CPAN/authors/" type="url">
http://www.perl.com/CPAN/authors/
</L>
When a LE<lt>I<manpage(section)>E<gt> code is parsed (and these are
fairly rare and not terribly useful), it produces this event structure:
- <L content-implicit="yes" to="manpage(section)" type="man">
+ <L content-implicit="yes" raw="manpage(section)" to="manpage(section)" type="man">
manpage(section)
</L>
@@ -247,7 +251,7 @@ For example, this Pod source:
produces this event structure:
- <L content-implicit="yes" to="crontab(5)" type="man">
+ <L content-implicit="yes" raw="crontab(5)" to="crontab(5)" type="man">
crontab(5)
</L>
@@ -258,7 +262,7 @@ in a I<section> attribute. For example, this Pod source:
will produce this event structure:
- <L content-implicit="yes" section="ENVIRONMENT" to="crontab(5)" type="man">
+ <L content-implicit="yes" raw="crontab(5)/&quot;ENVIRONMENT&quot;" section="ENVIRONMENT" to="crontab(5)" type="man">
"ENVIRONMENT" in crontab(5)
</L>
@@ -278,7 +282,7 @@ For example, this Pod source:
will produce this event structure:
- <L to="crontab(5)" type="man">
+ <L raw="hell itself!|crontab(5)" to="crontab(5)" type="man">
hell itself!
</L>
@@ -290,7 +294,7 @@ specified for this type of L code.
In the most common case, the simple case of a LE<lt>podpageE<gt> code
produces this event structure:
- <L content-implicit="yes" to="podpage" type="pod">
+ <L content-implicit="yes" raw="podpage" to="podpage" type="pod">
podpage
</L>
@@ -300,7 +304,7 @@ For example, this Pod source:
produces this event structure:
- <L content-implicit="yes" to="Net::Ping" type="pod">
+ <L content-implicit="yes" raw="Net::Ping" to="Net::Ping" type="pod">
Net::Ping
</L>
@@ -313,7 +317,7 @@ case discussed above. For example, this Pod source:
produces this event structure:
- <L to="perldiag" type="pod">
+ <L raw="Perl Error Messages|perldiag" to="perldiag" type="pod">
Perl Error Messages
</L>
@@ -325,7 +329,7 @@ For example, this Pod source:
produces this event structure:
- <L content-implicit="yes" section="Member Data" type="pod">
+ <L content-implicit="yes" raw="/&quot;Member Data&quot;" section="Member Data" type="pod">
"Member Data"
</L>
@@ -335,7 +339,7 @@ As another example, this Pod source:
produces this event structure:
- <L section="Member Data" type="pod">
+ <L raw="the various attributes|/&quot;Member Data&quot;" section="Member Data" type="pod">
the various attributes
</L>
@@ -347,7 +351,7 @@ For example, this Pod source:
produces this event structure:
- <L content-implicit="yes" section="Basic BLOCKs and Switch Statements" to="perlsyn" type="pod">
+ <L content-implicit="yes" raw="perlsyn/&quot;Basic BLOCKs and Switch Statements&quot;" section="Basic BLOCKs and Switch Statements" to="perlsyn" type="pod">
"Basic BLOCKs and Switch Statements" in perlsyn
</L>
@@ -357,7 +361,7 @@ As another example, this Pod source:
produces this event structure:
- <L section="Basic BLOCKs and Switch Statements" to="perlsyn" type="pod">
+ <L raw="SWITCH statements|perlsyn/&quot;Basic BLOCKs and Switch Statements&quot;" section="Basic BLOCKs and Switch Statements" to="perlsyn" type="pod">
SWITCH statements
</L>
@@ -368,12 +372,33 @@ Incidentally, note that we do not distinguish between these syntaxes:
L</Member Data>
L<Member Data> [deprecated syntax]
-That is, they all produce the same event structure, namely:
+That is, they all produce the same event structure (for the most part), namely:
- <L content-implicit="yes" section="Member Data" type="pod">
+ <L content-implicit="yes" raw="$depends_on_syntax" section="Member Data" type="pod">
&#34;Member Data&#34;
</L>
+The I<raw> attribute depends on what the raw content of the L<> is, so that is
+why the event structure is the same "for the most part".
+
+If you have not guessed it yet, the I<raw> attribute contains the raw,
+original, unescaped content of the L<> formatting code. In addition to the
+examples above, take notice of the following event structure produced by
+the following L<> formatting code.
+
+ L<click B<here>|page/About the C<-M> switch>
+
+ <L raw="click B<here>|page/About the C<-M> switch" section="About the -M switch" to="page" type="pod">
+ click B<here>
+ </L>
+
+Specifically, notice that the formatting codes are present and unescaped
+in I<raw>.
+
+There is a known bug in the I<raw> attribute where any surrounding whitespace
+is condensed into a single ' '. For example, given LE<60> linkE<62>, I<raw>
+will be " link".
+
=item events with an element_name of E or Z
While there are Pod codes EE<lt>...E<gt> and ZE<lt>E<gt>, these
@@ -432,7 +457,36 @@ a bulleted list, it will produce this event structure:
...Stuff...
</item-bullet>
...more item-bullets...
- </over-bullet>
+ </over-bullet fake-closer="1">
+
+The attribute I<fake-closer> is only present if it is a true value; it is not
+present if it is a false value. It is shown in the above example to illustrate
+where the attribute is (in the B<closing> tag). It signifies that the C<=over>
+did not have a matching C<=back>, and thus Pod::Simple had to create a fake
+closer.
+
+For example, this Pod source:
+
+ =over
+
+ =item *
+
+ Something
+
+ =back
+
+Would produce an event structure that does B<not> have the I<fake-closer>
+attribute, whereas this Pod source:
+
+ =over
+
+ =item *
+
+ Gasp! An unclosed =over block!
+
+would. The rest of the over-* examples will not demonstrate this attribute,
+but they all can have it. See L<Pod::Checker>'s source for an example of this
+attribute being used.
The value of the I<indent> attribute is whatever value is after the
"=over" directive, as in "=over 8". If no such value is specified
@@ -490,7 +544,7 @@ message might be issued to the user.
=item events with an element_name of over-text
-These events are are somewhat unlike the other over-*
+These events are somewhat unlike the other over-*
structures, as far as what their contents are. When
an "=over ... Z<>=back" block is parsed where the items are
a list of text "subheadings", it will produce this event structure:
@@ -504,7 +558,7 @@ a list of text "subheadings", it will produce this event structure:
...more item-text and/or stuff...
</over-text>
-The I<indent> attribute is as with the other over-* events.
+The I<indent> and I<fake-closer> attributes are as with the other over-* events.
For example, this Pod source:
@@ -545,7 +599,7 @@ produces this event structure:
=item events with an element_name of over-block
-These events are are somewhat unlike the other over-*
+These events are somewhat unlike the other over-*
structures, as far as what their contents are. When
an "=over ... Z<>=back" block is parsed where there are no items,
it will produce this event structure:
@@ -554,7 +608,7 @@ it will produce this event structure:
...stuff (generally Para or Verbatim elements)...
</over-block>
-The I<indent> attribute is as with the other over-* events.
+The I<indent> and I<fake-closer> attributes are as with the other over-* events.
For example, this Pod source:
@@ -569,7 +623,7 @@ For example, this Pod source:
circumstances of cruelty and perfidy scarcely paralleled in the most
barbarous ages, and totally unworthy the head of a civilized nation.
- =cut
+ =back
will produce this event structure:
@@ -585,6 +639,41 @@ will produce this event structure:
</Para>
</over-block>
+=item events with an element_name of over-empty
+
+B<Note: These events are only triggered if C<parse_empty_lists()> is set to a
+true value.>
+
+These events are somewhat unlike the other over-* structures, as far as what
+their contents are. When an "=over ... Z<>=back" block is parsed where there
+is no content, it will produce this event structure:
+
+ <over-empty indent="4" start_line="543">
+ </over-empty>
+
+The I<indent> and I<fake-closer> attributes are as with the other over-* events.
+
+For example, this Pod source:
+
+ =over
+
+ =over
+
+ =back
+
+ =back
+
+will produce this event structure:
+
+ <over-block indent="4" start_line="1">
+ <over-empty indent="4" start_line="3">
+ </over-empty>
+ </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
+empty, and is treated as such.
+
=item events with an element_name of item-bullet
See L</"events with an element_name of over-bullet">, above.
@@ -783,6 +872,21 @@ This is just like the code_handler attribute, except that it's for
unlikely to be interesting, but this is included for completeness.
+=item C<< $parser->pod_handler( I<CODE_REF> ) >>
+
+This is just like the code_handler attribute, except that it's for
+"=pod" lines, not code lines. The same caveats apply. "=pod" lines are
+unlikely to be interesting, but this is included for completeness.
+
+
+=item C<< $parser->whiteline_handler( I<CODE_REF> ) >>
+
+This is just like the code_handler attribute, except that it's for
+lines that are seemingly blank but have whitespace (" " and/or "\t") on them,
+not code lines. The same caveats apply. These lines are unlikely to be
+interesting, but this is included for completeness.
+
+
=item C<< $parser->whine( I<linenumber>, I<complaint string> ) >>
This notes a problem in the Pod, which will be reported to in the "Pod
@@ -847,8 +951,13 @@ conventions as two spaces after periods will be preserved by the parser.
This is primarily useful for output formats that treat whitespace as
significant (such as text or *roff, but not HTML).
-=back
+=item C<< $parser->parse_empty_lists( I<SOMEVALUE> ) >>
+
+If this attribute is set to true, the parser will not ignore empty
+C<=over>/C<=back> blocks. The type of C<=over> will be I<empty>, documented
+above, L<events with an element_name of over-empty>.
+=back
=head1 SEE ALSO
diff --git a/cpan/Pod-Simple/lib/Pod/Simple/Text.pm b/cpan/Pod-Simple/lib/Pod/Simple/Text.pm
index 04b01b2a0d..21c7a40cb7 100644
--- a/cpan/Pod-Simple/lib/Pod/Simple/Text.pm
+++ b/cpan/Pod-Simple/lib/Pod/Simple/Text.pm
@@ -6,7 +6,7 @@ use Carp ();
use Pod::Simple::Methody ();
use Pod::Simple ();
use vars qw( @ISA $VERSION $FREAKYMODE);
-$VERSION = '3.18';
+$VERSION = '3.19';
@ISA = ('Pod::Simple::Methody');
BEGIN { *DEBUG = defined(&Pod::Simple::DEBUG)
? \&Pod::Simple::DEBUG
diff --git a/cpan/Pod-Simple/lib/Pod/Simple/TextContent.pm b/cpan/Pod-Simple/lib/Pod/Simple/TextContent.pm
index 447fd9cacc..33be7b2258 100644
--- a/cpan/Pod-Simple/lib/Pod/Simple/TextContent.pm
+++ b/cpan/Pod-Simple/lib/Pod/Simple/TextContent.pm
@@ -6,7 +6,7 @@ use strict;
use Carp ();
use Pod::Simple ();
use vars qw( @ISA $VERSION );
-$VERSION = '3.18';
+$VERSION = '3.19';
@ISA = ('Pod::Simple');
sub new {
diff --git a/cpan/Pod-Simple/lib/Pod/Simple/TiedOutFH.pm b/cpan/Pod-Simple/lib/Pod/Simple/TiedOutFH.pm
index 1f09805292..95686116a6 100644
--- a/cpan/Pod-Simple/lib/Pod/Simple/TiedOutFH.pm
+++ b/cpan/Pod-Simple/lib/Pod/Simple/TiedOutFH.pm
@@ -4,7 +4,7 @@ package Pod::Simple::TiedOutFH;
use Symbol ('gensym');
use Carp ();
use vars qw($VERSION );
-$VERSION = '3.18';
+$VERSION = '3.19';
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
diff --git a/cpan/Pod-Simple/lib/Pod/Simple/Transcode.pm b/cpan/Pod-Simple/lib/Pod/Simple/Transcode.pm
index 17b73ae5b6..9ecf85aec8 100644
--- a/cpan/Pod-Simple/lib/Pod/Simple/Transcode.pm
+++ b/cpan/Pod-Simple/lib/Pod/Simple/Transcode.pm
@@ -2,7 +2,7 @@
require 5;
package Pod::Simple::Transcode;
use vars qw($VERSION );
-$VERSION = '3.18';
+$VERSION = '3.19';
BEGIN {
if(defined &DEBUG) {;} # Okay
diff --git a/cpan/Pod-Simple/lib/Pod/Simple/TranscodeDumb.pm b/cpan/Pod-Simple/lib/Pod/Simple/TranscodeDumb.pm
index d75ba6886f..4031ca3db2 100644
--- a/cpan/Pod-Simple/lib/Pod/Simple/TranscodeDumb.pm
+++ b/cpan/Pod-Simple/lib/Pod/Simple/TranscodeDumb.pm
@@ -5,7 +5,7 @@ require 5;
package Pod::Simple::TranscodeDumb;
use strict;
use vars qw($VERSION %Supported);
-$VERSION = '3.18';
+$VERSION = '3.19';
# This module basically pretends it knows how to transcode, except
# only for null-transcodings! We use this when Encode isn't
# available.
diff --git a/cpan/Pod-Simple/lib/Pod/Simple/TranscodeSmart.pm b/cpan/Pod-Simple/lib/Pod/Simple/TranscodeSmart.pm
index a97df580c9..de193fa0c5 100644
--- a/cpan/Pod-Simple/lib/Pod/Simple/TranscodeSmart.pm
+++ b/cpan/Pod-Simple/lib/Pod/Simple/TranscodeSmart.pm
@@ -9,7 +9,7 @@ use strict;
use Pod::Simple;
require Encode;
use vars qw($VERSION );
-$VERSION = '3.18';
+$VERSION = '3.19';
sub is_dumb {0}
sub is_smart {1}
diff --git a/cpan/Pod-Simple/lib/Pod/Simple/XHTML.pm b/cpan/Pod-Simple/lib/Pod/Simple/XHTML.pm
index f528a77831..5fc9f2aab0 100644
--- a/cpan/Pod-Simple/lib/Pod/Simple/XHTML.pm
+++ b/cpan/Pod-Simple/lib/Pod/Simple/XHTML.pm
@@ -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.18';
+$VERSION = '3.19';
use Pod::Simple::Methody ();
@ISA = ('Pod::Simple::Methody');
@@ -480,12 +480,16 @@ sub start_Document {
$doctype = $self->html_doctype || '';
$title = $self->force_title || $self->title || $self->default_title || '';
$metatags = $self->html_header_tags || '';
- if ($self->html_css) {
- $metatags .= "\n<link rel='stylesheet' href='" .
- $self->html_css . "' type='text/css' />";
+ if (my $css = $self->html_css) {
+ $metatags .= $css;
+ if ($css !~ /<link/) {
+ # this is required to be compatible with Pod::Simple::BatchHTML
+ $metatags .= '<link rel="stylesheet" href="'
+ . $self->encode_entities($css) . '" type="text/css" />';
+ }
}
if ($self->html_javascript) {
- $metatags .= "\n<script type='text/javascript' src='" .
+ $metatags .= qq{\n<script type="text/javascript" src="} .
$self->html_javascript . "'></script>";
}
$bodyid = $self->backlink ? ' id="_podtop_"' : '';
@@ -734,6 +738,10 @@ sub batch_mode_page_object_init {
return $self;
}
+sub html_header_after_title {
+}
+
+
1;
__END__
diff --git a/cpan/Pod-Simple/lib/Pod/Simple/XMLOutStream.pm b/cpan/Pod-Simple/lib/Pod/Simple/XMLOutStream.pm
index 4326ec4345..61473e317e 100644
--- a/cpan/Pod-Simple/lib/Pod/Simple/XMLOutStream.pm
+++ b/cpan/Pod-Simple/lib/Pod/Simple/XMLOutStream.pm
@@ -5,7 +5,7 @@ use strict;
use Carp ();
use Pod::Simple ();
use vars qw( $ATTR_PAD @ISA $VERSION $SORT_ATTRS);
-$VERSION = '3.18';
+$VERSION = '3.19';
BEGIN {
@ISA = ('Pod::Simple');
*DEBUG = \&Pod::Simple::DEBUG unless defined &DEBUG;
diff --git a/cpan/Pod-Simple/t/cbacks.t b/cpan/Pod-Simple/t/cbacks.t
index 4c15c82f7e..a7fa4a7708 100644
--- a/cpan/Pod-Simple/t/cbacks.t
+++ b/cpan/Pod-Simple/t/cbacks.t
@@ -43,11 +43,20 @@ while(@from) {
sub {
$_[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(
+ sub { $more .= "=" . $_[1] . ":" . $_[0]. "\n" } );
} => join "\n",
- "",
+ " ", # space outside pod
"\t# This is handy...",
+ "=pod text",
+ "\t", # tab inside pod
+ "=cut more text",
+ "\t", # tab outside pod
+ "=pod",
+ " \t ", # spaces and tabs inside pod
"=head1 I LIKE PIE",
- "",
+ " ", # space inside pod
"=cut",
"use Test::Harness;",
"runtests(sort glob 't/*.t');",
@@ -62,12 +71,19 @@ while(@from) {
}
ok scalar($got = $more), scalar($exp = join "\n" =>
- "1:",
+ "1: ",
"2:\t# This is handy...",
- "~5:=cut",
- "6:use Test::Harness;",
- "7:runtests(sort glob 't/*.t');",
- "8:",
+ "=4:\t",
+ "+3:=pod text",
+ "~5:=cut more text",
+ "6:\t",
+ "=8: \t ",
+ "+7:=pod",
+ "=10: ",
+ "~11:=cut",
+ "12:use Test::Harness;",
+ "13:runtests(sort glob 't/*.t');",
+ "14:",
"",
);
unless($got eq $exp) {
diff --git a/cpan/Pod-Simple/t/emptylists.t b/cpan/Pod-Simple/t/emptylists.t
new file mode 100644
index 0000000000..eb23e01179
--- /dev/null
+++ b/cpan/Pod-Simple/t/emptylists.t
@@ -0,0 +1,68 @@
+BEGIN {
+ if($ENV{PERL_CORE}) {
+ chdir 't';
+ @INC = '../lib';
+ }
+}
+
+use strict;
+use Test;
+BEGIN { plan tests => 5 };
+
+ok 1;
+
+use Pod::Simple::XMLOutStream;
+print "# Pod::Simple version $Pod::Simple::VERSION\n";
+
+my $x = 'Pod::Simple::XMLOutStream';
+$Pod::Simple::XMLOutStream::ATTR_PAD = ' ';
+$Pod::Simple::XMLOutStream::SORT_ATTRS = 1; # for predictably testable output
+
+sub on {shift->parse_empty_lists(1)}
+sub off {shift->parse_empty_lists(0)}
+
+my $pod = <<POD;
+=over
+
+=over
+
+=over
+
+=over
+
+=back
+
+=over
+
+=back
+
+=back
+
+=back
+
+=back
+POD
+
+#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+print "# Testing default behavior (parse_empty_lists( FALSE )) ...\n";
+
+ok( $x->_out($pod),
+ '<Document><over-block indent="4"><over-block indent="4"><over-block indent="4"></over-block></over-block></over-block></Document>'
+);
+
+print "# Testing explicit parse_empty_lists( FALSE ) ...\n";
+
+ok( $x->_out(\&off, $pod),
+ '<Document><over-block indent="4"><over-block indent="4"><over-block indent="4"></over-block></over-block></over-block></Document>'
+);
+
+print "# Testing parse_empty_lists( TRUE ) ...\n";
+
+ok( $x->_out(\&on, $pod),
+ '<Document><over-block indent="4"><over-block indent="4"><over-block indent="4"><over-empty indent="4"></over-empty><over-empty indent="4"></over-empty></over-block></over-block></over-block></Document>'
+);
+
+print "# Wrapping up... one for the road...\n";
+ok 1;
+print "# --- Done with ", __FILE__, " --- \n";
diff --git a/cpan/Pod-Simple/t/eol.t b/cpan/Pod-Simple/t/eol.t
new file mode 100644
index 0000000000..924aa373f9
--- /dev/null
+++ b/cpan/Pod-Simple/t/eol.t
@@ -0,0 +1,107 @@
+#!/usr/bin/perl
+
+# t/eol.t - check handling of \r, \n, and \r\n as line separators
+
+BEGIN {
+ chdir 't' if -d 't';
+}
+
+use warnings;
+use strict;
+use lib '../lib';
+use Test::More tests => 7;
+
+use_ok('Pod::Simple::XHTML') or exit;
+
+open(POD, ">$$.pod") or die "$$.pod: $!";
+print POD <<__EOF__;
+=pod
+
+=head1 NAME
+
+crlf
+
+=head1 DESCRIPTION
+
+crlf crlf crlf crlf crlf crlf crlf crlf crlf crlf crlf crlf crlf crlf crlf
+crlf crlf crlf crlf crlf crlf crlf crlf crlf crlf crlf crlf crlf crlf crlf
+crlf crlf crlf crlf crlf crlf crlf crlf crlf crlf crlf crlf crlf crlf crlf
+crlf crlf crlf crlf crlf crlf crlf crlf crlf crlf crlf crlf crlf crlf crlf
+
+ crlf crlf crlf crlf
+ crlf crlf crlf crlf
+ crlf crlf crlf crlf
+
+crlf crlf crlf crlf crlf crlf crlf crlf crlf crlf crlf crlf crlf crlf crlf
+crlf crlf crlf crlf crlf crlf crlf crlf crlf crlf crlf crlf crlf crlf crlf
+crlf crlf crlf crlf crlf crlf crlf crlf crlf crlf crlf crlf crlf crlf crlf
+crlf crlf crlf crlf crlf crlf crlf crlf crlf crlf crlf crlf crlf crlf crlf
+
+=cut
+__EOF__
+close(POD);
+
+# --- CR ---
+
+my $p1 = Pod::Simple::XHTML->new ();
+isa_ok ($p1, 'Pod::Simple::XHTML');
+
+open(POD, "<$$.pod") or die "$$.pod: $!";
+open(IN, ">$$.in") or die "$$.in: $!";
+while (<POD>) {
+ s/[\r\n]+/\r/g;
+ print IN $_;
+}
+close(POD);
+close(IN);
+
+$p1->output_string(\my $o1);
+$p1->parse_file("$$.in");
+
+# --- LF ---
+
+my $p2 = Pod::Simple::XHTML->new ();
+isa_ok ($p2, 'Pod::Simple::XHTML');
+
+open(POD, "<$$.pod") or die "$$.pod: $!";
+open(IN, ">$$.in") or die "$$.in: $!";
+while (<POD>) {
+ s/[\r\n]+/\n/g;
+ print IN $_;
+}
+close(POD);
+close(IN);
+
+$p2->output_string(\my $o2);
+$p2->parse_file("$$.in");
+
+# --- CRLF ---
+
+my $p3 = Pod::Simple::XHTML->new ();
+isa_ok ($p3, 'Pod::Simple::XHTML');
+
+open(POD, "<$$.pod") or die "$$.pod: $!";
+open(IN, ">$$.in") or die "$$.in: $!";
+while (<POD>) {
+ s/[\r\n]+/\r\n/g;
+ print IN $_;
+}
+close(POD);
+close(IN);
+
+$p3->output_string(\my $o3);
+$p3->parse_file("$$.in");
+
+# --- now test ---
+
+my $cksum1 = unpack("%32C*", $o1);
+my $cksum2 = unpack("%32C*", $o2);
+my $cksum3 = unpack("%32C*", $o3);
+
+ok($cksum1 == $cksum2, "CR vs LF");
+ok($cksum1 == $cksum3, "CR vs CRLF");
+ok($cksum2 == $cksum3, "LF vs CRLF");
+
+END {
+ 1 while unlink("$$.pod", "$$.in");
+}
diff --git a/cpan/Pod-Simple/t/eol2.t b/cpan/Pod-Simple/t/eol2.t
new file mode 100644
index 0000000000..5d2f52d93e
--- /dev/null
+++ b/cpan/Pod-Simple/t/eol2.t
@@ -0,0 +1,104 @@
+#!/usr/bin/perl
+
+# t/eol2.t - check handling of \r, \n, and \r\n as line separators (again)
+
+BEGIN {
+ chdir 't' if -d 't';
+}
+
+use warnings;
+use strict;
+use lib '../lib';
+use Test::More tests => 7;
+
+use_ok('Pod::Simple::XHTML') or exit;
+
+open(POD, ">$$.pod") or die "$$.pod: $!";
+print POD <<__EOF__;
+=pod
+
+=head1 NAME
+
+crlf
+
+=head1 DESCRIPTION
+
+crlf crlf crlf crlf crlf crlf crlf crlf crlf crlf crlf crlf crlf crlf crlf
+crlf crlf crlf crlf crlf crlf crlf crlf crlf crlf crlf crlf crlf crlf crlf
+crlf crlf crlf crlf crlf crlf crlf crlf crlf crlf crlf crlf crlf crlf crlf
+crlf crlf crlf crlf crlf crlf crlf crlf crlf crlf crlf crlf crlf crlf crlf
+
+ crlf crlf crlf crlf
+ crlf crlf crlf crlf
+ crlf crlf crlf crlf
+
+crlf crlf crlf crlf crlf crlf crlf crlf crlf crlf crlf crlf crlf crlf crlf
+crlf crlf crlf crlf crlf crlf crlf crlf crlf crlf crlf crlf crlf crlf crlf
+crlf crlf crlf crlf crlf crlf crlf crlf crlf crlf crlf crlf crlf crlf crlf
+crlf crlf crlf crlf crlf crlf crlf crlf crlf crlf crlf crlf crlf crlf crlf
+
+=cut
+__EOF__
+close(POD);
+
+# --- CR ---
+
+my $p1 = Pod::Simple::XHTML->new ();
+isa_ok ($p1, 'Pod::Simple::XHTML');
+
+open(POD, "<$$.pod") or die "$$.pod: $!";
+my $i1 = '';
+while (<POD>) {
+ s/[\r\n]+/\r/g;
+ $i1 .= $_;
+}
+close(POD);
+
+$p1->output_string(\my $o1);
+$p1->parse_string_document($i1);
+
+# --- LF ---
+
+my $p2 = Pod::Simple::XHTML->new ();
+isa_ok ($p2, 'Pod::Simple::XHTML');
+
+open(POD, "<$$.pod") or die "$$.pod: $!";
+my $i2 = '';
+while (<POD>) {
+ s/[\r\n]+/\n/g;
+ $i2 .= $_;
+}
+close(POD);
+
+$p2->output_string(\my $o2);
+$p2->parse_string_document($i2);
+
+# --- CRLF ---
+
+my $p3 = Pod::Simple::XHTML->new ();
+isa_ok ($p3, 'Pod::Simple::XHTML');
+
+open(POD, "<$$.pod") or die "$$.pod: $!";
+my $i3 = '';
+while (<POD>) {
+ s/[\r\n]+/\r\n/g;
+ $i3 .= $_;
+}
+close(POD);
+
+$p3->output_string(\my $o3);
+$p3->parse_string_document($i3);
+
+# --- now test ---
+
+my $cksum1 = unpack("%32C*", $o1);
+my $cksum2 = unpack("%32C*", $o2);
+my $cksum3 = unpack("%32C*", $o3);
+
+ok($cksum1 == $cksum2, "CR vs LF");
+ok($cksum1 == $cksum3, "CR vs CRLF");
+ok($cksum2 == $cksum3, "LF vs CRLF");
+
+END {
+ 1 while unlink("$$.pod", "$$.in");
+}
diff --git a/cpan/Pod-Simple/t/fake-closers.t b/cpan/Pod-Simple/t/fake-closers.t
new file mode 100644
index 0000000000..07f806587f
--- /dev/null
+++ b/cpan/Pod-Simple/t/fake-closers.t
@@ -0,0 +1,71 @@
+BEGIN {
+ if($ENV{PERL_CORE}) {
+ chdir 't';
+ @INC = '../lib';
+ }
+}
+
+use strict;
+use Test::More;
+use Data::Dumper;
+BEGIN { plan tests => 9 };
+
+ok 1;
+
+my $i = 0;
+
+print "# Real closers ...\n";
+
+for my $pod ( "=over\n\nblock\n\n=back",
+ "=over\n\nblock\n\n=cut\n\ncode\n\n=pod\n\n=back",
+ "=begin html\n\ntag\n\n=end html",
+ ) {
+ my $parser = Pod::Simple::Blurb->new();
+ $parser->parse_string_document($pod);
+ is($parser->{'closer-flag'}, -1, "real closer ". ++$i);
+}
+
+$i = 0;
+
+print "# Fake closers ...\n";
+
+for my $pod ("=begin html\n\ntag=cut",
+ "=begin html\n\ntag\n\n=begin xml tag =end xml",
+ "=over\n\nblock=cut",
+ "=over\n\nanother block",
+ ) {
+ my $parser = Pod::Simple::Blurb->new();
+ $parser->parse_string_document($pod);
+ is($parser->{'closer-flag'}, 1, "fake closer ". ++$i);
+}
+
+#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+print "# Wrapping up... one for the road...\n";
+ok 1;
+print "# --- Done with ", __FILE__, " --- \n";
+
+1;
+
+package Pod::Simple::Blurb;
+use warnings;
+use strict;
+use base qw/Pod::Simple::Methody/;
+
+sub new {
+ my $new = shift->SUPER::new(@_);
+ $new->output_string(\my $doesnotmatter);
+ $new->accept_targets('*');
+ return $new;
+}
+
+sub end_over_block {
+ shift->set(@_);
+}
+sub end_for {
+ shift->set(@_);
+}
+
+sub set {
+ $_[0]{'closer-flag'} = defined $_[1]{'fake-closer'} ? 1 : -1;
+}
diff --git a/cpan/Pod-Simple/t/fcodes_l.t b/cpan/Pod-Simple/t/fcodes_l.t
index 17be5dbb48..62970201d5 100644
--- a/cpan/Pod-Simple/t/fcodes_l.t
+++ b/cpan/Pod-Simple/t/fcodes_l.t
@@ -28,29 +28,29 @@ $Pod::Simple::XMLOutStream::SORT_ATTRS = 1; # for predictably testable output
print "# Simple/moderate L<stuff> tests...\n";
ok($x->_out(qq{=pod\n\nL<Net::Ping>\n}),
- '<Document><Para><L content-implicit="yes" to="Net::Ping" type="pod">Net::Ping</L></Para></Document>'
+ '<Document><Para><L content-implicit="yes" raw="Net::Ping" to="Net::Ping" type="pod">Net::Ping</L></Para></Document>'
);
ok($x->_out(qq{=pod\n\nL<crontab(5)>\n}),
- '<Document><Para><L content-implicit="yes" to="crontab(5)" type="man">crontab(5)</L></Para></Document>'
+ '<Document><Para><L content-implicit="yes" raw="crontab(5)" to="crontab(5)" type="man">crontab(5)</L></Para></Document>'
);
ok( $x->_out(qq{=pod\n\nL<Net::Ping/Ping-pong>\n}),
- '<Document><Para><L content-implicit="yes" section="Ping-pong" to="Net::Ping" type="pod">&#34;Ping-pong&#34; in Net::Ping</L></Para></Document>'
+ '<Document><Para><L content-implicit="yes" raw="Net::Ping/Ping-pong" section="Ping-pong" to="Net::Ping" type="pod">&#34;Ping-pong&#34; in Net::Ping</L></Para></Document>'
);
ok( $x->_out(qq{=pod\n\nL<Net::Ping/"Ping-pong">\n}),
- '<Document><Para><L content-implicit="yes" section="Ping-pong" to="Net::Ping" type="pod">&#34;Ping-pong&#34; in Net::Ping</L></Para></Document>'
+ '<Document><Para><L content-implicit="yes" raw="Net::Ping/&#34;Ping-pong&#34;" section="Ping-pong" to="Net::Ping" type="pod">&#34;Ping-pong&#34; in Net::Ping</L></Para></Document>'
);
ok( $x->_out(qq{=pod\n\nL</"Object Methods">\n}),
- '<Document><Para><L content-implicit="yes" section="Object Methods" type="pod">&#34;Object Methods&#34;</L></Para></Document>'
+ '<Document><Para><L content-implicit="yes" raw="/&#34;Object Methods&#34;" section="Object Methods" type="pod">&#34;Object Methods&#34;</L></Para></Document>'
);
ok( $x->_out(qq{=pod\n\nL</Object Methods>\n}),
- '<Document><Para><L content-implicit="yes" section="Object Methods" type="pod">&#34;Object Methods&#34;</L></Para></Document>'
+ '<Document><Para><L content-implicit="yes" raw="/Object Methods" section="Object Methods" type="pod">&#34;Object Methods&#34;</L></Para></Document>'
);
ok( $x->_out(qq{=pod\n\nL<"Object Methods">\n}),
- '<Document><Para><L content-implicit="yes" section="Object Methods" type="pod">&#34;Object Methods&#34;</L></Para></Document>'
+ '<Document><Para><L content-implicit="yes" raw="&#34;Object Methods&#34;" section="Object Methods" type="pod">&#34;Object Methods&#34;</L></Para></Document>'
);
@@ -58,23 +58,23 @@ print "# Complex L<stuff> tests...\n";
print "# Ents in the middle...\n";
ok($x->_out(qq{=pod\n\nL<Net::Ping>\n}),
- '<Document><Para><L content-implicit="yes" to="Net::Ping" type="pod">Net::Ping</L></Para></Document>'
+ '<Document><Para><L content-implicit="yes" raw="Net::Ping" to="Net::Ping" type="pod">Net::Ping</L></Para></Document>'
);
ok( $x->_out(qq{=pod\n\nL<Net::Ping/Ping-E<112>ong>\n}),
- '<Document><Para><L content-implicit="yes" section="Ping-pong" to="Net::Ping" type="pod">&#34;Ping-pong&#34; in Net::Ping</L></Para></Document>'
+ '<Document><Para><L content-implicit="yes" raw="Net::Ping/Ping-E&#60;112&#62;ong" section="Ping-pong" to="Net::Ping" type="pod">&#34;Ping-pong&#34; in Net::Ping</L></Para></Document>'
);
ok( $x->_out(qq{=pod\n\nL<Net::Ping/"Ping-E<112>ong">\n}),
- '<Document><Para><L content-implicit="yes" section="Ping-pong" to="Net::Ping" type="pod">&#34;Ping-pong&#34; in Net::Ping</L></Para></Document>'
+ '<Document><Para><L content-implicit="yes" raw="Net::Ping/&#34;Ping-E&#60;112&#62;ong&#34;" section="Ping-pong" to="Net::Ping" type="pod">&#34;Ping-pong&#34; in Net::Ping</L></Para></Document>'
);
ok( $x->_out(qq{=pod\n\nL</"Object E<77>ethods">\n}),
- '<Document><Para><L content-implicit="yes" section="Object Methods" type="pod">&#34;Object Methods&#34;</L></Para></Document>'
+ '<Document><Para><L content-implicit="yes" raw="/&#34;Object E&#60;77&#62;ethods&#34;" section="Object Methods" type="pod">&#34;Object Methods&#34;</L></Para></Document>'
);
ok( $x->_out(qq{=pod\n\nL</Object E<77>ethods>\n}),
- '<Document><Para><L content-implicit="yes" section="Object Methods" type="pod">&#34;Object Methods&#34;</L></Para></Document>'
+ '<Document><Para><L content-implicit="yes" raw="/Object E&#60;77&#62;ethods" section="Object Methods" type="pod">&#34;Object Methods&#34;</L></Para></Document>'
);
ok( $x->_out(qq{=pod\n\nL<"Object E<77>ethods">\n}),
- '<Document><Para><L content-implicit="yes" section="Object Methods" type="pod">&#34;Object Methods&#34;</L></Para></Document>'
+ '<Document><Para><L content-implicit="yes" raw="&#34;Object E&#60;77&#62;ethods&#34;" section="Object Methods" type="pod">&#34;Object Methods&#34;</L></Para></Document>'
);
@@ -82,46 +82,46 @@ ok( $x->_out(qq{=pod\n\nL<"Object E<77>ethods">\n}),
print "# Ents in the middle and at the start...\n";
ok($x->_out(qq{=pod\n\nL<E<78>et::Ping>\n}),
- '<Document><Para><L content-implicit="yes" to="Net::Ping" type="pod">Net::Ping</L></Para></Document>'
+ '<Document><Para><L content-implicit="yes" raw="E&#60;78&#62;et::Ping" to="Net::Ping" type="pod">Net::Ping</L></Para></Document>'
);
ok( $x->_out(qq{=pod\n\nL<E<78>et::Ping/Ping-E<112>ong>\n}),
- '<Document><Para><L content-implicit="yes" section="Ping-pong" to="Net::Ping" type="pod">&#34;Ping-pong&#34; in Net::Ping</L></Para></Document>'
+ '<Document><Para><L content-implicit="yes" raw="E&#60;78&#62;et::Ping/Ping-E&#60;112&#62;ong" section="Ping-pong" to="Net::Ping" type="pod">&#34;Ping-pong&#34; in Net::Ping</L></Para></Document>'
);
ok( $x->_out(qq{=pod\n\nL<E<78>et::Ping/"Ping-E<112>ong">\n}),
- '<Document><Para><L content-implicit="yes" section="Ping-pong" to="Net::Ping" type="pod">&#34;Ping-pong&#34; in Net::Ping</L></Para></Document>'
+ '<Document><Para><L content-implicit="yes" raw="E&#60;78&#62;et::Ping/&#34;Ping-E&#60;112&#62;ong&#34;" section="Ping-pong" to="Net::Ping" type="pod">&#34;Ping-pong&#34; in Net::Ping</L></Para></Document>'
);
ok( $x->_out(qq{=pod\n\nL</"E<79>bject E<77>ethods">\n}),
- '<Document><Para><L content-implicit="yes" section="Object Methods" type="pod">&#34;Object Methods&#34;</L></Para></Document>'
+ '<Document><Para><L content-implicit="yes" raw="/&#34;E&#60;79&#62;bject E&#60;77&#62;ethods&#34;" section="Object Methods" type="pod">&#34;Object Methods&#34;</L></Para></Document>'
);
ok( $x->_out(qq{=pod\n\nL</E<79>bject E<77>ethods>\n}),
- '<Document><Para><L content-implicit="yes" section="Object Methods" type="pod">&#34;Object Methods&#34;</L></Para></Document>'
+ '<Document><Para><L content-implicit="yes" raw="/E&#60;79&#62;bject E&#60;77&#62;ethods" section="Object Methods" type="pod">&#34;Object Methods&#34;</L></Para></Document>'
);
ok( $x->_out(qq{=pod\n\nL<"E<79>bject E<77>ethods">\n}),
- '<Document><Para><L content-implicit="yes" section="Object Methods" type="pod">&#34;Object Methods&#34;</L></Para></Document>'
+ '<Document><Para><L content-implicit="yes" raw="&#34;E&#60;79&#62;bject E&#60;77&#62;ethods&#34;" section="Object Methods" type="pod">&#34;Object Methods&#34;</L></Para></Document>'
);
print "# Ents in the middle and at the start and at the end...\n";
ok($x->_out(qq{=pod\n\nL<E<78>et::PinE<103>>\n}),
- '<Document><Para><L content-implicit="yes" to="Net::Ping" type="pod">Net::Ping</L></Para></Document>'
+ '<Document><Para><L content-implicit="yes" raw="E&#60;78&#62;et::PinE&#60;103&#62;" to="Net::Ping" type="pod">Net::Ping</L></Para></Document>'
);
ok( $x->_out(qq{=pod\n\nL<E<78>et::PinE<103>/Ping-E<112>onE<103>>\n}),
- '<Document><Para><L content-implicit="yes" section="Ping-pong" to="Net::Ping" type="pod">&#34;Ping-pong&#34; in Net::Ping</L></Para></Document>'
+ '<Document><Para><L content-implicit="yes" raw="E&#60;78&#62;et::PinE&#60;103&#62;/Ping-E&#60;112&#62;onE&#60;103&#62;" section="Ping-pong" to="Net::Ping" type="pod">&#34;Ping-pong&#34; in Net::Ping</L></Para></Document>'
);
ok( $x->_out(qq{=pod\n\nL<E<78>et::PinE<103>/"Ping-E<112>onE<103>">\n}),
- '<Document><Para><L content-implicit="yes" section="Ping-pong" to="Net::Ping" type="pod">&#34;Ping-pong&#34; in Net::Ping</L></Para></Document>'
+ '<Document><Para><L content-implicit="yes" raw="E&#60;78&#62;et::PinE&#60;103&#62;/&#34;Ping-E&#60;112&#62;onE&#60;103&#62;&#34;" section="Ping-pong" to="Net::Ping" type="pod">&#34;Ping-pong&#34; in Net::Ping</L></Para></Document>'
);
ok( $x->_out(qq{=pod\n\nL</"E<79>bject E<77>ethodE<115>">\n}),
- '<Document><Para><L content-implicit="yes" section="Object Methods" type="pod">&#34;Object Methods&#34;</L></Para></Document>'
+ '<Document><Para><L content-implicit="yes" raw="/&#34;E&#60;79&#62;bject E&#60;77&#62;ethodE&#60;115&#62;&#34;" section="Object Methods" type="pod">&#34;Object Methods&#34;</L></Para></Document>'
);
ok( $x->_out(qq{=pod\n\nL</E<79>bject E<77>ethodE<115>>\n}),
- '<Document><Para><L content-implicit="yes" section="Object Methods" type="pod">&#34;Object Methods&#34;</L></Para></Document>'
+ '<Document><Para><L content-implicit="yes" raw="/E&#60;79&#62;bject E&#60;77&#62;ethodE&#60;115&#62;" section="Object Methods" type="pod">&#34;Object Methods&#34;</L></Para></Document>'
);
ok( $x->_out(qq{=pod\n\nL<"E<79>bject E<77>ethodE<115>">\n}),
- '<Document><Para><L content-implicit="yes" section="Object Methods" type="pod">&#34;Object Methods&#34;</L></Para></Document>'
+ '<Document><Para><L content-implicit="yes" raw="&#34;E&#60;79&#62;bject E&#60;77&#62;ethodE&#60;115&#62;&#34;" section="Object Methods" type="pod">&#34;Object Methods&#34;</L></Para></Document>'
);
@@ -131,23 +131,23 @@ print "# Even more complex L<stuff> tests...\n";
print "# Ents in the middle...\n";
ok($x->_out(qq{=pod\n\nL<Net::Ping>\n}),
- '<Document><Para><L content-implicit="yes" to="Net::Ping" type="pod">Net::Ping</L></Para></Document>'
+ '<Document><Para><L content-implicit="yes" raw="Net::Ping" to="Net::Ping" type="pod">Net::Ping</L></Para></Document>'
);
ok( $x->_out(qq{=pod\n\nL<Net::Ping/Ping-E<112>ong>\n}),
- '<Document><Para><L content-implicit="yes" section="Ping-pong" to="Net::Ping" type="pod">&#34;Ping-pong&#34; in Net::Ping</L></Para></Document>'
+ '<Document><Para><L content-implicit="yes" raw="Net::Ping/Ping-E&#60;112&#62;ong" section="Ping-pong" to="Net::Ping" type="pod">&#34;Ping-pong&#34; in Net::Ping</L></Para></Document>'
);
ok( $x->_out(qq{=pod\n\nL<Net::Ping/"Ping-E<112>ong">\n}),
- '<Document><Para><L content-implicit="yes" section="Ping-pong" to="Net::Ping" type="pod">&#34;Ping-pong&#34; in Net::Ping</L></Para></Document>'
+ '<Document><Para><L content-implicit="yes" raw="Net::Ping/&#34;Ping-E&#60;112&#62;ong&#34;" section="Ping-pong" to="Net::Ping" type="pod">&#34;Ping-pong&#34; in Net::Ping</L></Para></Document>'
);
ok( $x->_out(qq{=pod\n\nL</"Object E<77>ethods">\n}),
- '<Document><Para><L content-implicit="yes" section="Object Methods" type="pod">&#34;Object Methods&#34;</L></Para></Document>'
+ '<Document><Para><L content-implicit="yes" raw="/&#34;Object E&#60;77&#62;ethods&#34;" section="Object Methods" type="pod">&#34;Object Methods&#34;</L></Para></Document>'
);
ok( $x->_out(qq{=pod\n\nL</Object E<77>ethods>\n}),
- '<Document><Para><L content-implicit="yes" section="Object Methods" type="pod">&#34;Object Methods&#34;</L></Para></Document>'
+ '<Document><Para><L content-implicit="yes" raw="/Object E&#60;77&#62;ethods" section="Object Methods" type="pod">&#34;Object Methods&#34;</L></Para></Document>'
);
ok( $x->_out(qq{=pod\n\nL<"Object E<77>ethods">\n}),
- '<Document><Para><L content-implicit="yes" section="Object Methods" type="pod">&#34;Object Methods&#34;</L></Para></Document>'
+ '<Document><Para><L content-implicit="yes" raw="&#34;Object E&#60;77&#62;ethods&#34;" section="Object Methods" type="pod">&#34;Object Methods&#34;</L></Para></Document>'
);
@@ -158,23 +158,23 @@ print "# Ents in the middle and at the start...\n";
ok($x->_out(qq{=pod\n\nL<Net::Ping>\n}),
- '<Document><Para><L content-implicit="yes" to="Net::Ping" type="pod">Net::Ping</L></Para></Document>'
+ '<Document><Para><L content-implicit="yes" raw="Net::Ping" to="Net::Ping" type="pod">Net::Ping</L></Para></Document>'
);
ok( $x->_out(qq{=pod\n\nL<Net::Ping/Ping-B<E<112>ong>>\n}),
- '<Document><Para><L content-implicit="yes" section="Ping-pong" to="Net::Ping" type="pod">&#34;Ping-<B>pong</B>&#34; in Net::Ping</L></Para></Document>'
+ '<Document><Para><L content-implicit="yes" raw="Net::Ping/Ping-B&#60;E&#60;112&#62;ong&#62;" section="Ping-pong" to="Net::Ping" type="pod">&#34;Ping-<B>pong</B>&#34; in Net::Ping</L></Para></Document>'
);
ok( $x->_out(qq{=pod\n\nL<Net::Ping/"Ping-B<E<112>ong>">\n}),
- '<Document><Para><L content-implicit="yes" section="Ping-pong" to="Net::Ping" type="pod">&#34;Ping-<B>pong</B>&#34; in Net::Ping</L></Para></Document>'
+ '<Document><Para><L content-implicit="yes" raw="Net::Ping/&#34;Ping-B&#60;E&#60;112&#62;ong&#62;&#34;" section="Ping-pong" to="Net::Ping" type="pod">&#34;Ping-<B>pong</B>&#34; in Net::Ping</L></Para></Document>'
);
ok( $x->_out(qq{=pod\n\nL</"B<Object> E<77>ethods">\n}),
- '<Document><Para><L content-implicit="yes" section="Object Methods" type="pod">&#34;<B>Object</B> Methods&#34;</L></Para></Document>'
+ '<Document><Para><L content-implicit="yes" raw="/&#34;B&#60;Object&#62; E&#60;77&#62;ethods&#34;" section="Object Methods" type="pod">&#34;<B>Object</B> Methods&#34;</L></Para></Document>'
);
ok( $x->_out(qq{=pod\n\nL</B<Object> E<77>ethods>\n}),
- '<Document><Para><L content-implicit="yes" section="Object Methods" type="pod">&#34;<B>Object</B> Methods&#34;</L></Para></Document>'
+ '<Document><Para><L content-implicit="yes" raw="/B&#60;Object&#62; E&#60;77&#62;ethods" section="Object Methods" type="pod">&#34;<B>Object</B> Methods&#34;</L></Para></Document>'
);
ok( $x->_out(qq{=pod\n\nL<"B<Object> E<77>ethods">\n}),
- '<Document><Para><L content-implicit="yes" section="Object Methods" type="pod">&#34;<B>Object</B> Methods&#34;</L></Para></Document>'
+ '<Document><Para><L content-implicit="yes" raw="&#34;B&#60;Object&#62; E&#60;77&#62;ethods&#34;" section="Object Methods" type="pod">&#34;<B>Object</B> Methods&#34;</L></Para></Document>'
);
@@ -182,46 +182,46 @@ ok( $x->_out(qq{=pod\n\nL<"B<Object> E<77>ethods">\n}),
print "# Ents in the middle and at the start...\n";
ok($x->_out(qq{=pod\n\nL<E<78>et::Ping>\n}),
- '<Document><Para><L content-implicit="yes" to="Net::Ping" type="pod">Net::Ping</L></Para></Document>'
+ '<Document><Para><L content-implicit="yes" raw="E&#60;78&#62;et::Ping" to="Net::Ping" type="pod">Net::Ping</L></Para></Document>'
);
ok( $x->_out(qq{=pod\n\nL<E<78>et::Ping/Ping-B<E<112>ong>>\n}),
- '<Document><Para><L content-implicit="yes" section="Ping-pong" to="Net::Ping" type="pod">&#34;Ping-<B>pong</B>&#34; in Net::Ping</L></Para></Document>'
+ '<Document><Para><L content-implicit="yes" raw="E&#60;78&#62;et::Ping/Ping-B&#60;E&#60;112&#62;ong&#62;" section="Ping-pong" to="Net::Ping" type="pod">&#34;Ping-<B>pong</B>&#34; in Net::Ping</L></Para></Document>'
);
ok( $x->_out(qq{=pod\n\nL<E<78>et::Ping/"Ping-B<E<112>ong>">\n}),
- '<Document><Para><L content-implicit="yes" section="Ping-pong" to="Net::Ping" type="pod">&#34;Ping-<B>pong</B>&#34; in Net::Ping</L></Para></Document>'
+ '<Document><Para><L content-implicit="yes" raw="E&#60;78&#62;et::Ping/&#34;Ping-B&#60;E&#60;112&#62;ong&#62;&#34;" section="Ping-pong" to="Net::Ping" type="pod">&#34;Ping-<B>pong</B>&#34; in Net::Ping</L></Para></Document>'
);
ok( $x->_out(qq{=pod\n\nL</"B<E<79>bject> E<77>ethods">\n}),
- '<Document><Para><L content-implicit="yes" section="Object Methods" type="pod">&#34;<B>Object</B> Methods&#34;</L></Para></Document>'
+ '<Document><Para><L content-implicit="yes" raw="/&#34;B&#60;E&#60;79&#62;bject&#62; E&#60;77&#62;ethods&#34;" section="Object Methods" type="pod">&#34;<B>Object</B> Methods&#34;</L></Para></Document>'
);
ok( $x->_out(qq{=pod\n\nL</B<E<79>bject> E<77>ethods>\n}),
- '<Document><Para><L content-implicit="yes" section="Object Methods" type="pod">&#34;<B>Object</B> Methods&#34;</L></Para></Document>'
+ '<Document><Para><L content-implicit="yes" raw="/B&#60;E&#60;79&#62;bject&#62; E&#60;77&#62;ethods" section="Object Methods" type="pod">&#34;<B>Object</B> Methods&#34;</L></Para></Document>'
);
ok( $x->_out(qq{=pod\n\nL<"B<E<79>bject> E<77>ethods">\n}),
- '<Document><Para><L content-implicit="yes" section="Object Methods" type="pod">&#34;<B>Object</B> Methods&#34;</L></Para></Document>'
+ '<Document><Para><L content-implicit="yes" raw="&#34;B&#60;E&#60;79&#62;bject&#62; E&#60;77&#62;ethods&#34;" section="Object Methods" type="pod">&#34;<B>Object</B> Methods&#34;</L></Para></Document>'
);
print "# Ents in the middle and at the start and at the end...\n";
ok($x->_out(qq{=pod\n\nL<E<78>et::PinE<103>>\n}),
- '<Document><Para><L content-implicit="yes" to="Net::Ping" type="pod">Net::Ping</L></Para></Document>'
+ '<Document><Para><L content-implicit="yes" raw="E&#60;78&#62;et::PinE&#60;103&#62;" to="Net::Ping" type="pod">Net::Ping</L></Para></Document>'
);
ok( $x->_out(qq{=pod\n\nL<E<78>et::PinE<103>/Ping-B<E<112>onE<103>>>\n}),
- '<Document><Para><L content-implicit="yes" section="Ping-pong" to="Net::Ping" type="pod">&#34;Ping-<B>pong</B>&#34; in Net::Ping</L></Para></Document>'
+ '<Document><Para><L content-implicit="yes" raw="E&#60;78&#62;et::PinE&#60;103&#62;/Ping-B&#60;E&#60;112&#62;onE&#60;103&#62;&#62;" section="Ping-pong" to="Net::Ping" type="pod">&#34;Ping-<B>pong</B>&#34; in Net::Ping</L></Para></Document>'
);
ok( $x->_out(qq{=pod\n\nL<E<78>et::PinE<103>/"Ping-B<E<112>onE<103>>">\n}),
- '<Document><Para><L content-implicit="yes" section="Ping-pong" to="Net::Ping" type="pod">&#34;Ping-<B>pong</B>&#34; in Net::Ping</L></Para></Document>'
+ '<Document><Para><L content-implicit="yes" raw="E&#60;78&#62;et::PinE&#60;103&#62;/&#34;Ping-B&#60;E&#60;112&#62;onE&#60;103&#62;&#62;&#34;" section="Ping-pong" to="Net::Ping" type="pod">&#34;Ping-<B>pong</B>&#34; in Net::Ping</L></Para></Document>'
);
ok( $x->_out(qq{=pod\n\nL</"B<E<79>bject> E<77>ethodE<115>">\n}),
- '<Document><Para><L content-implicit="yes" section="Object Methods" type="pod">&#34;<B>Object</B> Methods&#34;</L></Para></Document>'
+ '<Document><Para><L content-implicit="yes" raw="/&#34;B&#60;E&#60;79&#62;bject&#62; E&#60;77&#62;ethodE&#60;115&#62;&#34;" section="Object Methods" type="pod">&#34;<B>Object</B> Methods&#34;</L></Para></Document>'
);
ok( $x->_out(qq{=pod\n\nL</B<E<79>bject> E<77>ethodE<115>>\n}),
- '<Document><Para><L content-implicit="yes" section="Object Methods" type="pod">&#34;<B>Object</B> Methods&#34;</L></Para></Document>'
+ '<Document><Para><L content-implicit="yes" raw="/B&#60;E&#60;79&#62;bject&#62; E&#60;77&#62;ethodE&#60;115&#62;" section="Object Methods" type="pod">&#34;<B>Object</B> Methods&#34;</L></Para></Document>'
);
ok( $x->_out(qq{=pod\n\nL<"B<E<79>bject> E<77>ethodE<115>">\n}),
- '<Document><Para><L content-implicit="yes" section="Object Methods" type="pod">&#34;<B>Object</B> Methods&#34;</L></Para></Document>'
+ '<Document><Para><L content-implicit="yes" raw="&#34;B&#60;E&#60;79&#62;bject&#62; E&#60;77&#62;ethodE&#60;115&#62;&#34;" section="Object Methods" type="pod">&#34;<B>Object</B> Methods&#34;</L></Para></Document>'
);
@@ -230,28 +230,28 @@ ok( $x->_out(qq{=pod\n\nL<"B<E<79>bject> E<77>ethodE<115>">\n}),
print "#\n# L<url> tests...\n";
ok( $x->_out(qq{=pod\n\nL<news:comp.lang.perl.misc>\n}),
- '<Document><Para><L content-implicit="yes" to="news:comp.lang.perl.misc" type="url">news:comp.lang.perl.misc</L></Para></Document>'
+ '<Document><Para><L content-implicit="yes" raw="news:comp.lang.perl.misc" to="news:comp.lang.perl.misc" type="url">news:comp.lang.perl.misc</L></Para></Document>'
);
ok( $x->_out(qq{=pod\n\nL<http://www.perl.com>\n}),
- '<Document><Para><L content-implicit="yes" to="http://www.perl.com" type="url">http://www.perl.com</L></Para></Document>'
+ '<Document><Para><L content-implicit="yes" raw="http://www.perl.com" to="http://www.perl.com" type="url">http://www.perl.com</L></Para></Document>'
);
ok( $x->_out(qq{=pod\n\nL<http://www.perl.com/CPAN/authors/id/S/SB/SBURKE/>\n}),
- '<Document><Para><L content-implicit="yes" to="http://www.perl.com/CPAN/authors/id/S/SB/SBURKE/" type="url">http://www.perl.com/CPAN/authors/id/S/SB/SBURKE/</L></Para></Document>'
+ '<Document><Para><L content-implicit="yes" raw="http://www.perl.com/CPAN/authors/id/S/SB/SBURKE/" to="http://www.perl.com/CPAN/authors/id/S/SB/SBURKE/" type="url">http://www.perl.com/CPAN/authors/id/S/SB/SBURKE/</L></Para></Document>'
);
print "# L<url> tests with entities...\n";
ok( $x->_out(qq{=pod\n\nL<news:compE<46>lang.perl.misc>\n}),
- '<Document><Para><L content-implicit="yes" to="news:comp.lang.perl.misc" type="url">news:comp.lang.perl.misc</L></Para></Document>'
+ '<Document><Para><L content-implicit="yes" raw="news:compE&#60;46&#62;lang.perl.misc" to="news:comp.lang.perl.misc" type="url">news:comp.lang.perl.misc</L></Para></Document>'
);
ok( $x->_out(qq{=pod\n\nL<http://wwwE<46>perl.com>\n}),
- '<Document><Para><L content-implicit="yes" to="http://www.perl.com" type="url">http://www.perl.com</L></Para></Document>'
+ '<Document><Para><L content-implicit="yes" raw="http://wwwE&#60;46&#62;perl.com" to="http://www.perl.com" type="url">http://www.perl.com</L></Para></Document>'
);
ok( $x->_out(qq{=pod\n\nL<http://wwwE<46>perl.com/CPAN/authors/id/S/SB/SBURKE/>\n}),
- '<Document><Para><L content-implicit="yes" to="http://www.perl.com/CPAN/authors/id/S/SB/SBURKE/" type="url">http://www.perl.com/CPAN/authors/id/S/SB/SBURKE/</L></Para></Document>'
+ '<Document><Para><L content-implicit="yes" raw="http://wwwE&#60;46&#62;perl.com/CPAN/authors/id/S/SB/SBURKE/" to="http://www.perl.com/CPAN/authors/id/S/SB/SBURKE/" type="url">http://www.perl.com/CPAN/authors/id/S/SB/SBURKE/</L></Para></Document>'
);
ok( $x->_out(qq{=pod\n\nL<http://wwwE<46>perl.com/CPAN/authors/id/S/SB/SBURKEE<47>>\n}),
- '<Document><Para><L content-implicit="yes" to="http://www.perl.com/CPAN/authors/id/S/SB/SBURKE/" type="url">http://www.perl.com/CPAN/authors/id/S/SB/SBURKE/</L></Para></Document>'
+ '<Document><Para><L content-implicit="yes" raw="http://wwwE&#60;46&#62;perl.com/CPAN/authors/id/S/SB/SBURKEE&#60;47&#62;" to="http://www.perl.com/CPAN/authors/id/S/SB/SBURKE/" type="url">http://www.perl.com/CPAN/authors/id/S/SB/SBURKE/</L></Para></Document>'
);
@@ -261,42 +261,42 @@ ok( $x->_out(qq{=pod\n\nL<http://wwwE<46>perl.com/CPAN/authors/id/S/SB/SBURKEE<4
print "# L<text|stuff> tests...\n";
ok($x->_out(qq{=pod\n\nL<things|crontab(5)>\n}),
- '<Document><Para><L to="crontab(5)" type="man">things</L></Para></Document>'
+ '<Document><Para><L raw="things|crontab(5)" to="crontab(5)" type="man">things</L></Para></Document>'
);
ok($x->_out(qq{=pod\n\nL<things|crontab(5)/ENVIRONMENT>\n}),
- '<Document><Para><L section="ENVIRONMENT" to="crontab(5)" type="man">things</L></Para></Document>'
+ '<Document><Para><L raw="things|crontab(5)/ENVIRONMENT" section="ENVIRONMENT" to="crontab(5)" type="man">things</L></Para></Document>'
);
ok($x->_out(qq{=pod\n\nL<things|crontab(5)/"ENVIRONMENT">\n}),
- '<Document><Para><L section="ENVIRONMENT" to="crontab(5)" type="man">things</L></Para></Document>'
+ '<Document><Para><L raw="things|crontab(5)/&#34;ENVIRONMENT&#34;" section="ENVIRONMENT" to="crontab(5)" type="man">things</L></Para></Document>'
);
ok( $x->_out(qq{=pod\n\nL<Perl Error Messages|perldiag>\n}),
- '<Document><Para><L to="perldiag" type="pod">Perl Error Messages</L></Para></Document>'
+ '<Document><Para><L raw="Perl Error Messages|perldiag" to="perldiag" type="pod">Perl Error Messages</L></Para></Document>'
);
ok( $x->_out(qq{=pod\n\nL<Perl\nError\nMessages|perldiag>\n}),
- '<Document><Para><L to="perldiag" type="pod">Perl Error Messages</L></Para></Document>'
+ '<Document><Para><L raw="Perl Error Messages|perldiag" to="perldiag" type="pod">Perl Error Messages</L></Para></Document>'
);
ok( $x->_out(qq{=pod\n\nL<Perl\nError\t Messages|perldiag>\n}),
- '<Document><Para><L to="perldiag" type="pod">Perl Error Messages</L></Para></Document>'
+ '<Document><Para><L raw="Perl Error Messages|perldiag" to="perldiag" type="pod">Perl Error Messages</L></Para></Document>'
);
ok( $x->_out(qq{=pod\n\nL<SWITCH statements|perlsyn/"Basic BLOCKs and Switch Statements">\n}),
- '<Document><Para><L section="Basic BLOCKs and Switch Statements" to="perlsyn" type="pod">SWITCH statements</L></Para></Document>'
+ '<Document><Para><L raw="SWITCH statements|perlsyn/&#34;Basic BLOCKs and Switch Statements&#34;" section="Basic BLOCKs and Switch Statements" to="perlsyn" type="pod">SWITCH statements</L></Para></Document>'
);
ok( $x->_out(qq{=pod\n\nL<SWITCH statements|perlsyn/Basic BLOCKs and Switch Statements>\n}),
- '<Document><Para><L section="Basic BLOCKs and Switch Statements" to="perlsyn" type="pod">SWITCH statements</L></Para></Document>'
+ '<Document><Para><L raw="SWITCH statements|perlsyn/Basic BLOCKs and Switch Statements" section="Basic BLOCKs and Switch Statements" to="perlsyn" type="pod">SWITCH statements</L></Para></Document>'
);
ok( $x->_out(qq{=pod\n\nL<the various attributes|/"Member Data">\n}),
- '<Document><Para><L section="Member Data" type="pod">the various attributes</L></Para></Document>'
+ '<Document><Para><L raw="the various attributes|/&#34;Member Data&#34;" section="Member Data" type="pod">the various attributes</L></Para></Document>'
);
ok( $x->_out(qq{=pod\n\nL<the various attributes|/Member Data>\n}),
- '<Document><Para><L section="Member Data" type="pod">the various attributes</L></Para></Document>'
+ '<Document><Para><L raw="the various attributes|/Member Data" section="Member Data" type="pod">the various attributes</L></Para></Document>'
);
ok( $x->_out(qq{=pod\n\nL<the various attributes|"Member Data">\n}),
- '<Document><Para><L section="Member Data" type="pod">the various attributes</L></Para></Document>'
+ '<Document><Para><L raw="the various attributes|&#34;Member Data&#34;" section="Member Data" type="pod">the various attributes</L></Para></Document>'
);
@@ -304,32 +304,32 @@ print "#\n# Now some very complex L<text|stuff> tests...\n";
ok( $x->_out(qq{=pod\n\nL<Perl B<Error E<77>essages>|perldiag>\n}),
- '<Document><Para><L to="perldiag" type="pod">Perl <B>Error Messages</B></L></Para></Document>'
+ '<Document><Para><L raw="Perl B&#60;Error E&#60;77&#62;essages&#62;|perldiag" to="perldiag" type="pod">Perl <B>Error Messages</B></L></Para></Document>'
);
ok( $x->_out(qq{=pod\n\nL<Perl\nB<Error\nE<77>essages>|perldiag>\n}),
- '<Document><Para><L to="perldiag" type="pod">Perl <B>Error Messages</B></L></Para></Document>'
+ '<Document><Para><L raw="Perl B&#60;Error E&#60;77&#62;essages&#62;|perldiag" to="perldiag" type="pod">Perl <B>Error Messages</B></L></Para></Document>'
);
ok( $x->_out(qq{=pod\n\nL<Perl\nB<Error\t E<77>essages>|perldiag>\n}),
- '<Document><Para><L to="perldiag" type="pod">Perl <B>Error Messages</B></L></Para></Document>'
+ '<Document><Para><L raw="Perl B&#60;Error E&#60;77&#62;essages&#62;|perldiag" to="perldiag" type="pod">Perl <B>Error Messages</B></L></Para></Document>'
);
ok( $x->_out(qq{=pod\n\nL<SWITCH B<E<115>tatements>|perlsyn/"Basic I<BLOCKs> and Switch StatementE<115>">\n}),
- '<Document><Para><L section="Basic BLOCKs and Switch Statements" to="perlsyn" type="pod">SWITCH <B>statements</B></L></Para></Document>'
+ '<Document><Para><L raw="SWITCH B&#60;E&#60;115&#62;tatements&#62;|perlsyn/&#34;Basic I&#60;BLOCKs&#62; and Switch StatementE&#60;115&#62;&#34;" section="Basic BLOCKs and Switch Statements" to="perlsyn" type="pod">SWITCH <B>statements</B></L></Para></Document>'
);
ok( $x->_out(qq{=pod\n\nL<SWITCH B<E<115>tatements>|perlsyn/Basic I<BLOCKs> and Switch StatementE<115>>\n}),
- '<Document><Para><L section="Basic BLOCKs and Switch Statements" to="perlsyn" type="pod">SWITCH <B>statements</B></L></Para></Document>'
+ '<Document><Para><L raw="SWITCH B&#60;E&#60;115&#62;tatements&#62;|perlsyn/Basic I&#60;BLOCKs&#62; and Switch StatementE&#60;115&#62;" section="Basic BLOCKs and Switch Statements" to="perlsyn" type="pod">SWITCH <B>statements</B></L></Para></Document>'
);
ok( $x->_out(qq{=pod\n\nL<the F<various> attributes|/"Member Data">\n}),
- '<Document><Para><L section="Member Data" type="pod">the <F>various</F> attributes</L></Para></Document>'
+ '<Document><Para><L raw="the F&#60;various&#62; attributes|/&#34;Member Data&#34;" section="Member Data" type="pod">the <F>various</F> attributes</L></Para></Document>'
);
ok( $x->_out(qq{=pod\n\nL<the F<various> attributes|/Member Data>\n}),
- '<Document><Para><L section="Member Data" type="pod">the <F>various</F> attributes</L></Para></Document>'
+ '<Document><Para><L raw="the F&#60;various&#62; attributes|/Member Data" section="Member Data" type="pod">the <F>various</F> attributes</L></Para></Document>'
);
ok( $x->_out(qq{=pod\n\nL<the F<various> attributes|"Member Data">\n}),
- '<Document><Para><L section="Member Data" type="pod">the <F>various</F> attributes</L></Para></Document>'
+ '<Document><Para><L raw="the F&#60;various&#62; attributes|&#34;Member Data&#34;" section="Member Data" type="pod">the <F>various</F> attributes</L></Para></Document>'
);
@@ -337,32 +337,32 @@ print "#\n# Now some very complex L<text|stuff> tests with variant syntax...\n";
ok( $x->_out(qq{=pod\n\nL<< Perl B<<< Error E<77>essages >>>|perldiag >>\n}),
- '<Document><Para><L to="perldiag" type="pod">Perl <B>Error Messages</B></L></Para></Document>'
+ '<Document><Para><L raw="Perl B&#60;&#60;&#60; Error E&#60;77&#62;essages &#62;&#62;&#62;|perldiag" to="perldiag" type="pod">Perl <B>Error Messages</B></L></Para></Document>'
);
ok( $x->_out(qq{=pod\n\nL<< Perl\nB<<< Error\nE<77>essages >>>|perldiag >>\n}),
- '<Document><Para><L to="perldiag" type="pod">Perl <B>Error Messages</B></L></Para></Document>'
+ '<Document><Para><L raw="Perl B&#60;&#60;&#60; Error E&#60;77&#62;essages &#62;&#62;&#62;|perldiag" to="perldiag" type="pod">Perl <B>Error Messages</B></L></Para></Document>'
);
ok( $x->_out(qq{=pod\n\nL<< Perl\nB<<< Error\t E<77>essages >>>|perldiag >>\n}),
- '<Document><Para><L to="perldiag" type="pod">Perl <B>Error Messages</B></L></Para></Document>'
+ '<Document><Para><L raw="Perl B&#60;&#60;&#60; Error E&#60;77&#62;essages &#62;&#62;&#62;|perldiag" to="perldiag" type="pod">Perl <B>Error Messages</B></L></Para></Document>'
);
ok( $x->_out(qq{=pod\n\nL<< SWITCH B<<< E<115>tatements >>>|perlsyn/"Basic I<<<< BLOCKs >>>> and Switch StatementE<115>" >>\n}),
- '<Document><Para><L section="Basic BLOCKs and Switch Statements" to="perlsyn" type="pod">SWITCH <B>statements</B></L></Para></Document>'
+ '<Document><Para><L raw="SWITCH B&#60;&#60;&#60; E&#60;115&#62;tatements &#62;&#62;&#62;|perlsyn/&#34;Basic I&#60;&#60;&#60;&#60; BLOCKs &#62;&#62;&#62;&#62; and Switch StatementE&#60;115&#62;&#34;" section="Basic BLOCKs and Switch Statements" to="perlsyn" type="pod">SWITCH <B>statements</B></L></Para></Document>'
);
ok( $x->_out(qq{=pod\n\nL<< SWITCH B<<< E<115>tatements >>>|perlsyn/Basic I<<<< BLOCKs >>>> and Switch StatementE<115> >>\n}),
- '<Document><Para><L section="Basic BLOCKs and Switch Statements" to="perlsyn" type="pod">SWITCH <B>statements</B></L></Para></Document>'
+ '<Document><Para><L raw="SWITCH B&#60;&#60;&#60; E&#60;115&#62;tatements &#62;&#62;&#62;|perlsyn/Basic I&#60;&#60;&#60;&#60; BLOCKs &#62;&#62;&#62;&#62; and Switch StatementE&#60;115&#62;" section="Basic BLOCKs and Switch Statements" to="perlsyn" type="pod">SWITCH <B>statements</B></L></Para></Document>'
);
ok( $x->_out(qq{=pod\n\nL<<< the F<< various >> attributes|/"Member Data" >>>\n}),
- '<Document><Para><L section="Member Data" type="pod">the <F>various</F> attributes</L></Para></Document>'
+ '<Document><Para><L raw="the F&#60;&#60; various &#62;&#62; attributes|/&#34;Member Data&#34;" section="Member Data" type="pod">the <F>various</F> attributes</L></Para></Document>'
);
ok( $x->_out(qq{=pod\n\nL<<< the F<< various >> attributes|/Member Data >>>\n}),
- '<Document><Para><L section="Member Data" type="pod">the <F>various</F> attributes</L></Para></Document>'
+ '<Document><Para><L raw="the F&#60;&#60; various &#62;&#62; attributes|/Member Data" section="Member Data" type="pod">the <F>various</F> attributes</L></Para></Document>'
);
ok( $x->_out(qq{=pod\n\nL<<< the F<< various >> attributes|"Member Data" >>>\n}),
- '<Document><Para><L section="Member Data" type="pod">the <F>various</F> attributes</L></Para></Document>'
+ '<Document><Para><L raw="the F&#60;&#60; various &#62;&#62; attributes|&#34;Member Data&#34;" section="Member Data" type="pod">the <F>various</F> attributes</L></Para></Document>'
);
###########################################################################
@@ -371,51 +371,51 @@ print "#\n# Now some very complex L<text|stuff> tests with variant syntax and te
ok( $x->_out(qq{=pod\n\nI like L<< Perl B<<< Error E<77>essages >>>|perldiag >>.\n}),
- '<Document><Para>I like <L to="perldiag" type="pod">Perl <B>Error Messages</B></L>.</Para></Document>'
+ '<Document><Para>I like <L raw="Perl B&#60;&#60;&#60; Error E&#60;77&#62;essages &#62;&#62;&#62;|perldiag" to="perldiag" type="pod">Perl <B>Error Messages</B></L>.</Para></Document>'
);
ok( $x->_out(qq{=pod\n\nI like L<< Perl\nB<<< Error\nE<77>essages >>>|perldiag >>.\n}),
- '<Document><Para>I like <L to="perldiag" type="pod">Perl <B>Error Messages</B></L>.</Para></Document>'
+ '<Document><Para>I like <L raw="Perl B&#60;&#60;&#60; Error E&#60;77&#62;essages &#62;&#62;&#62;|perldiag" to="perldiag" type="pod">Perl <B>Error Messages</B></L>.</Para></Document>'
);
ok( $x->_out(qq{=pod\n\nI like L<< Perl\nB<<< Error\t E<77>essages >>>|perldiag >>.\n}),
- '<Document><Para>I like <L to="perldiag" type="pod">Perl <B>Error Messages</B></L>.</Para></Document>'
+ '<Document><Para>I like <L raw="Perl B&#60;&#60;&#60; Error E&#60;77&#62;essages &#62;&#62;&#62;|perldiag" to="perldiag" type="pod">Perl <B>Error Messages</B></L>.</Para></Document>'
);
ok( $x->_out(qq{=pod\n\nI like L<< SWITCH B<<< E<115>tatements >>>|perlsyn/"Basic I<<<< BLOCKs >>>> and Switch StatementE<115>" >>.\n}),
- '<Document><Para>I like <L section="Basic BLOCKs and Switch Statements" to="perlsyn" type="pod">SWITCH <B>statements</B></L>.</Para></Document>'
+ '<Document><Para>I like <L raw="SWITCH B&#60;&#60;&#60; E&#60;115&#62;tatements &#62;&#62;&#62;|perlsyn/&#34;Basic I&#60;&#60;&#60;&#60; BLOCKs &#62;&#62;&#62;&#62; and Switch StatementE&#60;115&#62;&#34;" section="Basic BLOCKs and Switch Statements" to="perlsyn" type="pod">SWITCH <B>statements</B></L>.</Para></Document>'
);
ok( $x->_out(qq{=pod\n\nI like L<< SWITCH B<<< E<115>tatements >>>|perlsyn/Basic I<<<< BLOCKs >>>> and Switch StatementE<115> >>.\n}),
- '<Document><Para>I like <L section="Basic BLOCKs and Switch Statements" to="perlsyn" type="pod">SWITCH <B>statements</B></L>.</Para></Document>'
+ '<Document><Para>I like <L raw="SWITCH B&#60;&#60;&#60; E&#60;115&#62;tatements &#62;&#62;&#62;|perlsyn/Basic I&#60;&#60;&#60;&#60; BLOCKs &#62;&#62;&#62;&#62; and Switch StatementE&#60;115&#62;" section="Basic BLOCKs and Switch Statements" to="perlsyn" type="pod">SWITCH <B>statements</B></L>.</Para></Document>'
);
ok( $x->_out(qq{=pod\n\nI like L<<< the F<< various >> attributes|/"Member Data" >>>.\n}),
- '<Document><Para>I like <L section="Member Data" type="pod">the <F>various</F> attributes</L>.</Para></Document>'
+ '<Document><Para>I like <L raw="the F&#60;&#60; various &#62;&#62; attributes|/&#34;Member Data&#34;" section="Member Data" type="pod">the <F>various</F> attributes</L>.</Para></Document>'
);
ok( $x->_out(qq{=pod\n\nI like L<<< the F<< various >> attributes|/Member Data >>>.\n}),
- '<Document><Para>I like <L section="Member Data" type="pod">the <F>various</F> attributes</L>.</Para></Document>'
+ '<Document><Para>I like <L raw="the F&#60;&#60; various &#62;&#62; attributes|/Member Data" section="Member Data" type="pod">the <F>various</F> attributes</L>.</Para></Document>'
);
ok( $x->_out(qq{=pod\n\nI like L<<< the F<< various >> attributes|"Member Data" >>>.\n}),
- '<Document><Para>I like <L section="Member Data" type="pod">the <F>various</F> attributes</L>.</Para></Document>'
+ '<Document><Para>I like <L raw="the F&#60;&#60; various &#62;&#62; attributes|&#34;Member Data&#34;" section="Member Data" type="pod">the <F>various</F> attributes</L>.</Para></Document>'
);
ok( $x->_out(qq{=pod\n\nI like L<<< B<text>s|http://text.com >>>.\n}),
-'<Document><Para>I like <L to="http://text.com" type="url"><B>text</B>s</L>.</Para></Document>'
+'<Document><Para>I like <L raw="B&#60;text&#62;s|http://text.com" to="http://text.com" type="url"><B>text</B>s</L>.</Para></Document>'
);
ok( $x->_out(qq{=pod\n\nI like L<<< text|https://text.com/1/2 >>>.\n}),
-'<Document><Para>I like <L to="https://text.com/1/2" type="url">text</L>.</Para></Document>'
+'<Document><Para>I like <L raw="text|https://text.com/1/2" to="https://text.com/1/2" type="url">text</L>.</Para></Document>'
);
ok( $x->_out(qq{=pod\n\nI like L<<< I<text>|http://text.com >>>.\n}),
-'<Document><Para>I like <L to="http://text.com" type="url"><I>text</I></L>.</Para></Document>'
+'<Document><Para>I like <L raw="I&#60;text&#62;|http://text.com" to="http://text.com" type="url"><I>text</I></L>.</Para></Document>'
);
ok( $x->_out(qq{=pod\n\nI like L<<< C<text>|http://text.com >>>.\n}),
-'<Document><Para>I like <L to="http://text.com" type="url"><C>text</C></L>.</Para></Document>'
+'<Document><Para>I like <L raw="C&#60;text&#62;|http://text.com" to="http://text.com" type="url"><C>text</C></L>.</Para></Document>'
);
ok( $x->_out(qq{=pod\n\nI like L<<< I<tI<eI<xI<t>>>>|mailto:earlE<64>text.com >>>.\n}),
-'<Document><Para>I like <L to="mailto:earl@text.com" type="url"><I>t<I>e<I>x<I>t</I></I></I></I></L>.</Para></Document>'
+'<Document><Para>I like <L raw="I&#60;tI&#60;eI&#60;xI&#60;t&#62;&#62;&#62;&#62;|mailto:earlE&#60;64&#62;text.com" to="mailto:earl@text.com" type="url"><I>t<I>e<I>x<I>t</I></I></I></I></L>.</Para></Document>'
);
ok( $x->_out(qq{=pod\n\nI like L<<< textZ<>|http://text.com >>>.\n}),
-'<Document><Para>I like <L to="http://text.com" type="url">text</L>.</Para></Document>'
+'<Document><Para>I like <L raw="textZ&#60;&#62;|http://text.com" to="http://text.com" type="url">text</L>.</Para></Document>'
);
diff --git a/cpan/Pod-Simple/t/fcodes_s.t b/cpan/Pod-Simple/t/fcodes_s.t
index 0983388cf8..684ee777ae 100644
--- a/cpan/Pod-Simple/t/fcodes_s.t
+++ b/cpan/Pod-Simple/t/fcodes_s.t
@@ -61,17 +61,19 @@ skip( $unless_ascii,
"=pod\n\nI like bric-a-bracE<160>aE<160>gogo.\n",
));
&ok(
- map {my $z = $_; $z =~ s/content-implicit="yes" //g; $z }
+ map {my $z = $_; $z =~ s/content-implicit="yes" //g; $z =~ s/raw=".+?" //g; $z }
$x->_duo( sub { $_[0]->nbsp_for_S(1) },
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( $x->_duo( sub { $_[0]->nbsp_for_S(1) },
+&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},
qq{=pod\n\nI like L<StuffE<160>likeE<160>that|"bric-a-brac a gogo">.\n},
));
&ok(
- map {my $z = $_; $z =~ s/content-implicit="yes" //g; $z }
+ map {my $z = $_; $z =~ s/content-implicit="yes" //g; $z =~ s/raw=".+?" //g; $z }
$x->_duo( sub { $_[0]->nbsp_for_S(1) },
qq{=pod\n\nI like S<L<Stuff I<like that>|"bric-a-brac a gogo">>.\n},
qq{=pod\n\nI like L<StuffE<160>I<likeE<160>that>|"bric-a-brac a gogo">.\n},
diff --git a/cpan/Pod-Simple/t/search12.t b/cpan/Pod-Simple/t/search12.t
index 4f8231bfbc..c132ce9d33 100644
--- a/cpan/Pod-Simple/t/search12.t
+++ b/cpan/Pod-Simple/t/search12.t
@@ -75,10 +75,11 @@ ok grep( m/squaa\.pm/, keys %$where2name ), 1;
###### Now with recurse(0)
-print "# Testing the surveying of a current directory without recursing...\n";
+print "# Testing the surveying of a subdirectory with recursing off...\n";
$x->recurse(0);
-($name2where, $where2name) = $x->survey($cwd);
+($name2where, $where2name) = $x->survey(
+ File::Spec->catdir($cwd, 't', 'testlib2'));
$p = pretty( $where2name, $name2where )."\n";
$p =~ s/, +/,\n/g;
@@ -87,17 +88,17 @@ print $p;
{
my $names = join "|", sort values %$where2name;
-ok $names, "";
+ok $names, "Suzzle";
}
{
my $names = join "|", sort keys %$name2where;
-ok $names, "";
+ok $names, "Suzzle";
}
-ok( ($name2where->{'squaa'} || 'huh???'), 'huh???');
+ok( ($name2where->{'Vliff'} || 'huh???'), 'huh???');
-ok grep( m/squaa\.pm/, keys %$where2name ), 0;
+ok grep( m/Vliff\.pm/, keys %$where2name ), 0;
ok 1;
diff --git a/cpan/Pod-Simple/t/x_nixer.t b/cpan/Pod-Simple/t/x_nixer.t
index 488b72cd62..f43518706a 100644
--- a/cpan/Pod-Simple/t/x_nixer.t
+++ b/cpan/Pod-Simple/t/x_nixer.t
@@ -159,7 +159,7 @@ ok( Pod::Simple::DumpAsXML->_out( \&nixy_mergy, "=pod\n\nZ<>F<C<Z<>fE<111>o> I<b
# Now the scary bits... with L's!
print "# A wee L<...> sanity test...\n";
ok( Pod::Simple::XMLOutStream->_out(qq{=pod\n\nL<E<78>et::Ping/Ping-E<112>ong>\n}),
- '<Document><Para><L content-implicit="yes" section="Ping-pong" to="Net::Ping" type="pod">&#34;Ping-pong&#34; in Net::Ping</L></Para></Document>'
+ '<Document><Para><L content-implicit="yes" raw="E&#60;78&#62;et::Ping/Ping-E&#60;112&#62;ong" section="Ping-pong" to="Net::Ping" type="pod">&#34;Ping-pong&#34; in Net::Ping</L></Para></Document>'
);
print "# Now a wee L<...> with mergy...\n";
@@ -170,7 +170,7 @@ ok( Pod::Simple::DumpAsXML->_out(\&mergy, qq{=pod\n\nL<E<78>et::Ping/Ping-E<112>
'<Document>',
' <Para>',
- ' <L content-implicit="yes" section="Ping-pong" to="Net::Ping" type="pod">',
+ ' <L content-implicit="yes" raw="E&#60;78&#62;et::Ping/Ping-E&#60;112&#62;ong" section="Ping-pong" to="Net::Ping" type="pod">',
' &#34;Ping-pong&#34; in Net::Ping',
' </L>',
' </Para>',
diff --git a/cpan/Pod-Simple/t/xhtml01.t b/cpan/Pod-Simple/t/xhtml01.t
index d8f2417348..32e875ef12 100644
--- a/cpan/Pod-Simple/t/xhtml01.t
+++ b/cpan/Pod-Simple/t/xhtml01.t
@@ -510,7 +510,7 @@ $parser->parse_string_document(<<'EOPOD');
A plain paragraph with body tags and css tags turned on.
EOPOD
-like($results, qr/<link rel='stylesheet' href='style.css' type='text\/css' \/>/,
+like($results, qr/<link rel="stylesheet" href="style.css" type="text\/css" \/>/,
"adding html body tags and css tags");
diff --git a/cpan/Pod-Simple/t/xhtml15.t b/cpan/Pod-Simple/t/xhtml15.t
new file mode 100644
index 0000000000..2f1bc5e4c2
--- /dev/null
+++ b/cpan/Pod-Simple/t/xhtml15.t
@@ -0,0 +1,37 @@
+#!/usr/bin/perl -w
+
+# t/xhtml15.t - test compatibility between Pod::Simple::XHTML and
+# Pod::Simple::HtmlBatch
+
+use strict;
+use warnings;
+use lib 'lib';
+use Test::More;
+
+use_ok('Pod::Simple::XHTML') or exit;
+
+my ($parser, $results);
+
+initialize();
+my $style = 'http://amazingpants.com/style.css';
+$parser->html_css($style);
+$parser->parse_string_document( '=head1 Foo' );
+like $results, qr/ href="$style" /, 'CSS is correct when link is passed in';
+
+initialize();
+my $link = qq{<link rel="stylesheet" href="$style" type="text/css">};
+$parser->html_css($link);
+$parser->parse_string_document( '=head1 Foo' );
+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);
+ $parser->output_string( \$results );
+ $results = '';
+}