diff options
author | Chris 'BinGOs' Williams <chris@bingosnet.co.uk> | 2013-05-12 14:48:18 +0100 |
---|---|---|
committer | Chris 'BinGOs' Williams <chris@bingosnet.co.uk> | 2013-05-12 14:48:18 +0100 |
commit | b5ae6e744cecbf0725bf3e9c06ba17e6f0ae8633 (patch) | |
tree | b9b21962fd45474158d79717cd448e30a593ff05 /cpan | |
parent | 058ce27e651caf4c9d0ff58e79dba0457179805f (diff) | |
download | perl-b5ae6e744cecbf0725bf3e9c06ba17e6f0ae8633.tar.gz |
Update Pod-Simple to CPAN version 3.28
[DELTA]
2013-05-04 David E. Wheeler <david@justatheory.org>
* Release 3.28
Removed use of 'done_testing' in t/white.t, which was added in
v3.27. Thanks to Paul Howarth for the catch.
Fixed inproperly calculated number of skipped tests in t/xhtml01.t
when HTML::Entities is not intalled.
2013-05-03 David E. Wheeler <david@justatheory.org>
* Release 3.27
Added new warnings as defined by Pod::Checker, thanks to RJBS:
+ "=over" without "=back"
+ "L<>" starts or ends with whitespace
+ raw "|" or "/" in "L<text|link>" text
Added ->keep_encoding_directive, which is false by default, to
prevent formatters from emitting a document's '=encoding'
directive in most cases. That they emitted the encoding was a bug
introduced in v3.26 (RT #84093). Now, only the DumpAsText and
DumpAsXML formats set it to true. Patch from Patrice Dumas.
Diffstat (limited to 'cpan')
34 files changed, 305 insertions, 164 deletions
diff --git a/cpan/Pod-Simple/ChangeLog b/cpan/Pod-Simple/ChangeLog index c6bc739258..73583f63e1 100644 --- a/cpan/Pod-Simple/ChangeLog +++ b/cpan/Pod-Simple/ChangeLog @@ -1,6 +1,29 @@ # ChangeLog for Pod::Simple dist #--------------------------------------------------------------------------- +2013-05-04 David E. Wheeler <david@justatheory.org> + * Release 3.28 + + Removed use of 'done_testing' in t/white.t, which was added in + v3.27. Thanks to Paul Howarth for the catch. + + Fixed inproperly calculated number of skipped tests in t/xhtml01.t + when HTML::Entities is not intalled. + +2013-05-03 David E. Wheeler <david@justatheory.org> + * Release 3.27 + + Added new warnings as defined by Pod::Checker, thanks to RJBS: + + "=over" without "=back" + + "L<>" starts or ends with whitespace + + raw "|" or "/" in "L<text|link>" text + + Added ->keep_encoding_directive, which is false by default, to + prevent formatters from emitting a document's '=encoding' + directive in most cases. That they emitted the encoding was a bug + introduced in v3.26 (RT #84093). Now, only the DumpAsText and + DumpAsXML formats set it to true. Patch from Patrice Dumas. + 2013-02-27 David E. Wheeler <david@justatheory.org> * Release 3.26 diff --git a/cpan/Pod-Simple/README b/cpan/Pod-Simple/README index 83164e884c..1ff257fd61 100644 --- a/cpan/Pod-Simple/README +++ b/cpan/Pod-Simple/README @@ -1,4 +1,4 @@ -=head1 Pod::Simple version 3.26 +=head1 Pod::Simple version 3.28 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 f1c7625a64..fb5438f7f7 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.26'; +$VERSION = '3.28'; @Known_formatting_codes = qw(I B C L E F S X Z); %Known_formatting_codes = map(($_=>1), @Known_formatting_codes); @@ -80,6 +80,7 @@ __PACKAGE__->_accessorize( 'bare_output', # For some subclasses: whether to prepend # header-code and postpend footer-code + 'keep_encoding_directive', # whether to emit =encoding 'nix_X_codes', # whether to ignore X<...> codes 'merge_text', # whether to avoid breaking a single piece of # text up into several events @@ -1064,6 +1065,12 @@ sub _treat_Ls { # Process our dear dear friends, the L<...> sequences $treelet->[$i] = 'L<>'; # just make it a text node next; # and move on } + + if( (! ref $ell->[2] && $ell->[2] =~ /\A\s/) + ||(! ref $ell->[-1] && $ell->[-1] =~ /\s\z/) + ) { + $self->whine( $start_line, "L<> starts or ends with whitespace" ); + } # Catch URLs: @@ -1179,6 +1186,13 @@ sub _treat_Ls { # Process our dear dear friends, the L<...> sequences DEBUG > 3 and print " FOUND a '|' in it. Splitting into [$1] + [$2]\n"; + if ($link_text[0] =~ m{[|/]}) { + $self->whine( + $start_line, + "alternative text '$link_text[0]' contains non-escaped | or /" + ); + } + unshift @link_text, splice @ell_content, 0, $j; # leaving only things at J and after @ell_content = grep ref($_)||length($_), @ell_content ; diff --git a/cpan/Pod-Simple/lib/Pod/Simple/BlackBox.pm b/cpan/Pod-Simple/lib/Pod/Simple/BlackBox.pm index 99b629ee2e..a1b570810d 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.26'; +$VERSION = '3.28'; #use constant DEBUG => 7; BEGIN { require Pod::Simple; @@ -804,6 +804,7 @@ sub _ponder_paragraph_buffer { } elsif($para_type eq '=encoding') { # Not actually acted on here, but we catch errors here. $self->_handle_encoding_second_level($para); + next unless $self->keep_encoding_directive; $para_type = 'Plain'; } elsif($para_type eq '~Verbatim') { $para->[0] = 'Verbatim'; @@ -1518,6 +1519,11 @@ sub _closers_for_all_curr_open { if($copy[0] eq '=for') { $copy[0] = '=end'; } elsif($copy[0] eq '=over') { + $self->whine( + $still_open->[1]{start_line} , + "=over without closing =back" + ); + $copy[0] = '=back'; } else { die "I don't know how to auto-close an open $copy[0] region"; diff --git a/cpan/Pod-Simple/lib/Pod/Simple/Checker.pm b/cpan/Pod-Simple/lib/Pod/Simple/Checker.pm index ecdbe72dee..92e1bee238 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.26'; +$VERSION = '3.28'; @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 dc6437e086..b170bb780a 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.26'; +$VERSION = '3.28'; 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 8ee50a72a9..019dfd57fb 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.26'; +$VERSION = '3.28'; use Pod::Simple (); BEGIN {@ISA = ('Pod::Simple')} @@ -16,6 +16,7 @@ sub new { my $new = $self->SUPER::new(@_); $new->{'output_fh'} ||= *STDOUT{IO}; $new->accept_codes('VerbatimFormatted'); + $new->keep_encoding_directive(1); return $new; } diff --git a/cpan/Pod-Simple/lib/Pod/Simple/DumpAsXML.pm b/cpan/Pod-Simple/lib/Pod/Simple/DumpAsXML.pm index 4c252635a3..ac925c08ef 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.26'; +$VERSION = '3.28'; use Pod::Simple (); BEGIN {@ISA = ('Pod::Simple')} @@ -17,6 +17,7 @@ sub new { my $new = $self->SUPER::new(@_); $new->{'output_fh'} ||= *STDOUT{IO}; $new->accept_codes('VerbatimFormatted'); + $new->keep_encoding_directive(1); return $new; } diff --git a/cpan/Pod-Simple/lib/Pod/Simple/HTML.pm b/cpan/Pod-Simple/lib/Pod/Simple/HTML.pm index 2378ad7fb3..8a2f81569c 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.26'; +$VERSION = '3.28'; 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 8448a24bee..e41b11e2c5 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.26'; +$VERSION = '3.28'; @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 0b5dbaa843..be1f5345d0 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.26'; +$VERSION = '3.28'; use strict; use Pod::Simple::BlackBox; use vars qw($VERSION ); -$VERSION = '3.26'; +$VERSION = '3.28'; 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 c5090779d9..38acaa20d0 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.26'; +$VERSION = '3.28'; @ISA = ('Pod::Simple'); # Yes, we could use named variables, but I want this to be impose diff --git a/cpan/Pod-Simple/lib/Pod/Simple/Progress.pm b/cpan/Pod-Simple/lib/Pod/Simple/Progress.pm index 86ceaac2a9..f9cd681672 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.26'; +$VERSION = '3.28'; 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 41f557cbcb..5c13724dc1 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.26'; +$VERSION = '3.28'; 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 b4f0207720..5fa402318e 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.26'; +$VERSION = '3.28'; 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 ec65787c7b..3edb0ad569 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.26'; +$VERSION = '3.28'; 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 c237ac41f7..a75fd7a706 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.26'; +$VERSION = '3.28'; 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 305ef0235e..bbae51ba69 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.26'; +$VERSION = '3.28'; 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 eff7fba628..067e6b9dd3 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.26'; +$VERSION = '3.28'; 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 216ad9b229..15cb292fc5 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.26'; ## Current version of this package +$VERSION = '3.28'; ## 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 025b92210e..0b42a22b27 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.26'; +$VERSION = '3.28'; 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 720ba66da1..7a7976bdc4 100644 --- a/cpan/Pod-Simple/lib/Pod/Simple/Subclassing.pod +++ b/cpan/Pod-Simple/lib/Pod/Simple/Subclassing.pod @@ -12,22 +12,22 @@ Pod::Simple::Subclassing -- write a formatter as a Pod::Simple subclass use strict; sub _handle_element_start { - my($parser, $element_name, $attr_hash_r) = @_; - ... + my($parser, $element_name, $attr_hash_r) = @_; + ... } sub _handle_element_end { - 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. - ... + 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. + ... } sub _handle_text { - my($parser, $text) = @_; - ... + my($parser, $text) = @_; + ... } 1; @@ -105,13 +105,13 @@ TODO describe Parsing a document produces this event structure: <Document start_line="543"> - ...all events... + ...all events... </Document> The value of the I<start_line> attribute will be the line number of the first Pod directive in the document. -If there is no Pod in the given document, then the +If there is no Pod in the given document, then the event structure will be this: <Document contentless="1" start_line="543"> @@ -126,9 +126,9 @@ last line in the file. Parsing a plain (non-verbatim, non-directive, non-data) paragraph in a Pod document produces this event structure: - <Para start_line="543"> - ...all events in this paragraph... - </Para> + <Para start_line="543"> + ...all events in this paragraph... + </Para> The value of the I<start_line> attribute will be the line number of the start of the paragraph. @@ -140,14 +140,14 @@ For example, parsing this paragraph of Pod: produces this event structure: - <Para start_line="129"> - The value of the - <I> - start_line - </I> - attribute will be the line number of the first Pod directive - in the document. - </Para> + <Para start_line="129"> + The value of the + <I> + start_line + </I> + attribute will be the line number of the first Pod directive + in the document. + </Para> =item events with an element_name of B, C, F, or I. @@ -157,9 +157,9 @@ S<BE<lt>E<lt> ... E<gt>E<gt>>, or S<BE<lt>E<lt>E<lt>E<lt> ... E<gt>E<gt>E<gt>E<gt>>, etc.) produces this event structure: - <B> - ...stuff... - </B> + <B> + ...stuff... + </B> Currently, there are no attributes conveyed. @@ -175,9 +175,9 @@ any attributes. Normally, parsing an SE<lt>...E<gt> sequence produces this event structure, just as if it were a B/C/F/I code: - <S> - ...stuff... - </S> + <S> + ...stuff... + </S> However, Pod::Simple (and presumably all derived parsers) offers the C<nbsp_for_S> option which, if enabled, will suppress all S events, and @@ -191,9 +191,9 @@ means non-breaking space. Normally, parsing an XE<lt>...E<gt> sequence produces this event structure, just as if it were a B/C/F/I code: - <X> - ...stuff... - </X> + <X> + ...stuff... + </X> However, Pod::Simple (and presumably all derived parsers) offers the C<nix_X_codes> option which, if enabled, will suppress all X events @@ -219,7 +219,7 @@ When a LE<lt>I<some_url>E<gt> code is parsed, it produces this event structure: <L content-implicit="yes" raw="that_url" to="that_url" type="url"> - that_url + that_url </L> The C<type="url"> attribute is always specified for this type of @@ -232,14 +232,14 @@ For example, this Pod source: produces this event structure: <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/ + 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" raw="manpage(section)" to="manpage(section)" type="man"> - manpage(section) + manpage(section) </L> The C<type="man"> attribute is always specified for this type of @@ -252,7 +252,7 @@ For example, this Pod source: produces this event structure: <L content-implicit="yes" raw="crontab(5)" to="crontab(5)" type="man"> - crontab(5) + crontab(5) </L> In the rare cases where a man page link has a specified, that text appears @@ -263,7 +263,7 @@ in a I<section> attribute. For example, this Pod source: will produce this event structure: <L content-implicit="yes" raw="crontab(5)/"ENVIRONMENT"" section="ENVIRONMENT" to="crontab(5)" type="man"> - "ENVIRONMENT" in crontab(5) + "ENVIRONMENT" in crontab(5) </L> In the rare case where the Pod document has code like @@ -283,7 +283,7 @@ For example, this Pod source: will produce this event structure: <L raw="hell itself!|crontab(5)" to="crontab(5)" type="man"> - hell itself! + hell itself! </L> The last type of L structure is for links to/within Pod documents. It is @@ -295,7 +295,7 @@ In the most common case, the simple case of a LE<lt>podpageE<gt> code produces this event structure: <L content-implicit="yes" raw="podpage" to="podpage" type="pod"> - podpage + podpage </L> For example, this Pod source: @@ -305,7 +305,7 @@ For example, this Pod source: produces this event structure: <L content-implicit="yes" raw="Net::Ping" to="Net::Ping" type="pod"> - Net::Ping + Net::Ping </L> In cases where there is link-text explicitly specified, it @@ -318,7 +318,7 @@ case discussed above. For example, this Pod source: produces this event structure: <L raw="Perl Error Messages|perldiag" to="perldiag" type="pod"> - Perl Error Messages + Perl Error Messages </L> In cases of links to a section in the current Pod document, @@ -330,7 +330,7 @@ For example, this Pod source: produces this event structure: <L content-implicit="yes" raw="/"Member Data"" section="Member Data" type="pod"> - "Member Data" + "Member Data" </L> As another example, this Pod source: @@ -340,7 +340,7 @@ As another example, this Pod source: produces this event structure: <L raw="the various attributes|/"Member Data"" section="Member Data" type="pod"> - the various attributes + the various attributes </L> In cases of links to a section in a different Pod document, @@ -352,7 +352,7 @@ For example, this Pod source: produces this event structure: <L content-implicit="yes" raw="perlsyn/"Basic BLOCKs and Switch Statements"" section="Basic BLOCKs and Switch Statements" to="perlsyn" type="pod"> - "Basic BLOCKs and Switch Statements" in perlsyn + "Basic BLOCKs and Switch Statements" in perlsyn </L> As another example, this Pod source: @@ -362,7 +362,7 @@ As another example, this Pod source: produces this event structure: <L raw="SWITCH statements|perlsyn/"Basic BLOCKs and Switch Statements"" section="Basic BLOCKs and Switch Statements" to="perlsyn" type="pod"> - SWITCH statements + SWITCH statements </L> Incidentally, note that we do not distinguish between these syntaxes: @@ -375,7 +375,7 @@ Incidentally, note that we do not distinguish between these syntaxes: That is, they all produce the same event structure (for the most part), namely: <L content-implicit="yes" raw="$depends_on_syntax" section="Member Data" type="pod"> - "Member Data" + "Member Data" </L> The I<raw> attribute depends on what the raw content of the C<LE<lt>E<gt>> is, @@ -389,7 +389,7 @@ by the following C<LE<lt>E<gt>> 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> + click B<here> </L> Specifically, notice that the formatting codes are present and unescaped @@ -411,7 +411,7 @@ When a Pod verbatim paragraph (AKA "codeblock") is parsed, it produces this event structure: <Verbatim start_line="543" xml:space="preserve"> - ...text... + ...text... </Verbatim> The value of the I<start_line> attribute will be the line number of the @@ -427,7 +427,7 @@ When a "=head1 ..." directive is parsed, it produces this event structure: <head1> - ...stuff... + ...stuff... </head1> For example, a directive consisting of this: @@ -437,26 +437,33 @@ For example, a directive consisting of this: will produce this event structure: <head1 start_line="543"> - Options to - <C> - new - </C> - et al. + Options to + <C> + new + </C> + et al. </head1> "=head2" thru "=head4" directives are the same, except for the element names in the event structure. +=item events with an element_name of encoding + +In the default case, the events corresponding to C<=encoding> directives +are not emitted. They are emitted if C<keep_encoding_directive> is true. +In that case they produce event structures like +L</"events with an element_name of head1 .. head4"> above. + =item events with an element_name of over-bullet When an "=over ... Z<>=back" block is parsed where the items are a bulleted list, it will produce this event structure: <over-bullet indent="4" start_line="543"> - <item-bullet start_line="545"> - ...Stuff... - </item-bullet> - ...more item-bullets... + <item-bullet start_line="545"> + ...Stuff... + </item-bullet> + ...more item-bullets... </over-bullet fake-closer="1"> The attribute I<fake-closer> is only present if it is a true value; it is not @@ -509,12 +516,12 @@ For example, this Pod source: produces this event structure: <over-bullet indent="4" start_line="10"> - <item-bullet start_line="12"> - Stuff - </item-bullet> - <item-bullet start_line="14"> - Bar <I>baz</I>! - </item-bullet> + <item-bullet start_line="12"> + Stuff + </item-bullet> + <item-bullet start_line="14"> + Bar <I>baz</I>! + </item-bullet> </over-bullet> =item events with an element_name of over-number @@ -523,10 +530,10 @@ When an "=over ... Z<>=back" block is parsed where the items are a numbered list, it will produce this event structure: <over-number indent="4" start_line="543"> - <item-number number="1" start_line="545"> - ...Stuff... - </item-number> - ...more item-number... + <item-number number="1" start_line="545"> + ...Stuff... + </item-number> + ...more item-number... </over-bullet> This is like the "over-bullet" event structure; but note that the contents @@ -550,12 +557,12 @@ an "=over ... Z<>=back" block is parsed where the items are a list of text "subheadings", it will produce this event structure: <over-text indent="4" start_line="543"> - <item-text> - ...stuff... - </item-text> - ...stuff (generally Para or Verbatim elements)... - <item-text> - ...more item-text and/or stuff... + <item-text> + ...stuff... + </item-text> + ...stuff (generally Para or Verbatim elements)... + <item-text> + ...more item-text and/or stuff... </over-text> The I<indent> and I<fake-closer> attributes are as with the other over-* events. @@ -577,22 +584,22 @@ For example, this Pod source: produces this event structure: <over-text indent="4" start_line="20"> - <item-text start_line="22"> - Foo - </item-text> - <Para start_line="24"> - Stuff - </Para> - <item-text start_line="26"> - Bar - <I> - baz - </I> - ! - </item-text> - <Para start_line="28"> - Quux - </Para> + <item-text start_line="22"> + Foo + </item-text> + <Para start_line="24"> + Stuff + </Para> + <item-text start_line="26"> + Bar + <I> + baz + </I> + ! + </item-text> + <Para start_line="28"> + Quux + </Para> </over-text> @@ -605,7 +612,7 @@ an "=over ... Z<>=back" block is parsed where there are no items, it will produce this event structure: <over-block indent="4" start_line="543"> - ...stuff (generally Para or Verbatim elements)... + ...stuff (generally Para or Verbatim elements)... </over-block> The I<indent> and I<fake-closer> attributes are as with the other over-* events. @@ -628,15 +635,15 @@ For example, this Pod source: will produce this event structure: <over-block indent="4" start_line="2"> - <Para start_line="4"> - For cutting off our trade with all parts of the world - </Para> - <Para start_line="6"> - For transporting us beyond seas to be tried for pretended offenses - </Para> - <Para start_line="8"> - He is at this time transporting large armies of [...more text...] - </Para> + <Para start_line="4"> + For cutting off our trade with all parts of the world + </Para> + <Para start_line="6"> + For transporting us beyond seas to be tried for pretended offenses + </Para> + <Para start_line="8"> + He is at this time transporting large armies of [...more text...] + </Para> </over-block> =item events with an element_name of over-empty @@ -666,12 +673,12 @@ For example, this Pod source: will produce this event structure: <over-block indent="4" start_line="1"> - <over-empty indent="4" start_line="3"> - </over-empty> + <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 +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 @@ -714,15 +721,15 @@ the ones described in the I<perlpod>. As the parser sees sections like: - =for html <img src="fig1.jpg"> + =for html <img src="fig1.jpg"> or - =begin html + =begin html - <img src="fig1.jpg"> + <img src="fig1.jpg"> - =end html + =end html ...the parser will ignore these sections unless your subclass has specified that it wants to see sections targeted to "html" (or whatever @@ -749,7 +756,7 @@ beyond just the standard ones (I B C L F S X, plus the two weird ones you don't actually see in the parse tree, Z and E). For example, to also accept codes "N", "R", and "W": - $parser->accept_codes( qw( N R W ) ); + $parser->accept_codes( qw( N R W ) ); B<TODO: document how this interacts with =extend, and long element names> @@ -769,11 +776,11 @@ all), or as verbatim (mostly just expanding tabs), or as processed text For example, to accept a new directive "=method", you'd presumably use: - $parser->accept_directive_as_processed("method"); + $parser->accept_directive_as_processed("method"); so that you could have Pod lines like: - =method I<$whatever> thing B<um> + =method I<$whatever> thing B<um> Making up your own directives breaks compatibility with other Pod formatters, in a way that using "=for I<target> ..." lines doesn't; @@ -787,11 +794,11 @@ Setting this attribute to a true value (and by default it is false) will turn "SE<lt>...E<gt>" sequences into sequences of words separated by C<\xA0> (non-breaking space) characters. For example, it will take this: - I like S<Dutch apple pie>, don't you? + I like S<Dutch apple pie>, don't you? and treat it as if it were: - I like DutchE<nbsp>appleE<nbsp>pie, don't you? + I like DutchE<nbsp>appleE<nbsp>pie, don't you? This is handy for output formats that don't have anything quite like an "SE<lt>...E<gt>" code, but which do have a code for non-breaking space. @@ -808,7 +815,7 @@ L<perlpodspec> requires output formats (wherever possible) to note this detail in a comment in the output format. For example, for some kind of SGML output format: - print OUT "<!-- \n", $parser->version_report, "\n -->"; + print OUT "<!-- \n", $parser->version_report, "\n -->"; =item C<< $parser->pod_para_count() >> @@ -829,6 +836,15 @@ ignores any "XE<lt>...E<gt>" sequences in the document being parsed. Many formats don't actually use the content of these codes, so have no reason to process them. +=item C<< $parser->keep_encoding_directive( I<SOMEVALUE> ) >> + +This attribute, when set to a true value (it is false by default) +will keep C<=encoding> and its content in the event structure. Most +formats don't actually need to process the content of an C<=encoding> +directive, even when this directive sets the encoding and the +processor makes use of the encoding information. Indeed, it is +possible to know the encoding without processing the directive +content. =item C<< $parser->merge_text( I<SOMEVALUE> ) >> @@ -837,7 +853,7 @@ makes sure that only one event (or token, or node) will be created for any single contiguous sequence of text. For example, consider this somewhat contrived example: - I just LOVE Z<>hotE<32>apple pie! + I just LOVE Z<>hotE<32>apple pie! When that is parsed and events are about to be called on it, it may actually seem to be four different text events, one right after another: @@ -853,10 +869,10 @@ This specifies code that should be called when a code line is seen that no code should be called. If you provide a routine, it should start out like this: - sub get_code_line { # or whatever you'll call it - my($line, $line_number, $parser) = @_; - ... - } + sub get_code_line { # or whatever you'll call it + my($line, $line_number, $parser) = @_; + ... + } Note, however, that sometimes the Pod events aren't processed in exactly the same order as the code lines are -- i.e., if you have a file with @@ -1053,5 +1069,3 @@ Yes, L<...> is hard. =cut - - diff --git a/cpan/Pod-Simple/lib/Pod/Simple/Text.pm b/cpan/Pod-Simple/lib/Pod/Simple/Text.pm index 7971227f68..bd1a5416df 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.26'; +$VERSION = '3.28'; @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 ca29d54b3d..6788df6d76 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.26'; +$VERSION = '3.28'; @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 1428e30b77..0b2fb2f8c4 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.26'; +$VERSION = '3.28'; #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ diff --git a/cpan/Pod-Simple/lib/Pod/Simple/Transcode.pm b/cpan/Pod-Simple/lib/Pod/Simple/Transcode.pm index e0faa4c1c3..9e835048a0 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.26'; +$VERSION = '3.28'; 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 374dfb23d8..4749e9af19 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.26'; +$VERSION = '3.28'; # 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 f1fc64069b..06fdb9f275 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.26'; +$VERSION = '3.28'; 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 b38a408d00..df896e64a7 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.26'; +$VERSION = '3.28'; use Pod::Simple::Methody (); @ISA = ('Pod::Simple::Methody'); diff --git a/cpan/Pod-Simple/lib/Pod/Simple/XMLOutStream.pm b/cpan/Pod-Simple/lib/Pod/Simple/XMLOutStream.pm index 7dc604e717..47496e2577 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.26'; +$VERSION = '3.28'; BEGIN { @ISA = ('Pod::Simple'); *DEBUG = \&Pod::Simple::DEBUG unless defined &DEBUG; @@ -20,6 +20,7 @@ sub new { my $self = shift; my $new = $self->SUPER::new(@_); $new->{'output_fh'} ||= *STDOUT{IO}; + $new->keep_encoding_directive(1); #$new->accept_codes('VerbatimFormatted'); return $new; } diff --git a/cpan/Pod-Simple/t/html01.t b/cpan/Pod-Simple/t/html01.t index 5ad848ebfa..16e6c5dad3 100644 --- a/cpan/Pod-Simple/t/html01.t +++ b/cpan/Pod-Simple/t/html01.t @@ -115,7 +115,7 @@ SUBCLASS: { ok( My::Pod::HTML->_out( sub{ $_[0]->bare_output(1) }, - "=pod\n\n=over\n\n=item Foo\n\n", + "=pod\n\n=over\n\n=item Foo\n\n=back\n", ), "\n<dl>\n<dt><a name=\"howdy\"\n>Foo</a></dt>\n</dl>\n", ); diff --git a/cpan/Pod-Simple/t/items.t b/cpan/Pod-Simple/t/items.t index 630ef87f8d..f76cf59fa5 100644 --- a/cpan/Pod-Simple/t/items.t +++ b/cpan/Pod-Simple/t/items.t @@ -189,18 +189,22 @@ ok( $x->_out( join "\n\n", '', '', $d = 11; print "# Now checking that document-end closes things right...\n"; -ok( $x->_out( join "\n\n", '', '', - '=over', - '=item *', - 'Stuff', - '=cut', - 'Stuff', +ok( $x->_out( + # We know there'd be a warning about implicit =back; disable it! + sub { $_[0]->no_whining(1); }, + join( "\n\n", '', '', '=over', - '=item 1.', - '=over 19', - 'Gleiven', - 'Squim F<.thingrc>!', - '', '' + '=item *', + 'Stuff', + '=cut', + 'Stuff', + '=over', + '=item 1.', + '=over 19', + 'Gleiven', + 'Squim F<.thingrc>!', + '', '', + ), ), join '', '<Document>', '<over-bullet indent="4">', diff --git a/cpan/Pod-Simple/t/whine.t b/cpan/Pod-Simple/t/whine.t new file mode 100644 index 0000000000..668c9099f2 --- /dev/null +++ b/cpan/Pod-Simple/t/whine.t @@ -0,0 +1,69 @@ +use strict; +use warnings; +use Test::More tests => 4; + +{ + package Pod::Simple::ErrorFinder; + use base 'Pod::Simple::DumpAsXML'; # arbitrary choice -- rjbs, 2013-04-16 + + my @errors; + sub whine { + my ($self, @rest) = @_; + push @errors, [ @rest ]; + $self->SUPER::whine(@rest); + } + + sub scream { + my ($self, @rest) = @_; + push @errors, [ @rest ]; + $self->SUPER::scream(@rest); + } + + sub errors_for_input { + my ($class, $input, $mutor) = @_; + @errors = (); + + my $parser = $class->new; + my $output = ''; + $parser->output_string( \$output ); + $parser->parse_string_document( $input ); + + @errors = sort { $a->[0] <=> $b->[0] + || $a->[1] cmp $b->[1] } @errors; + + return @errors; + } +} + +sub errors { Pod::Simple::ErrorFinder->errors_for_input(@_) } + +{ + my @errors = errors("=over 4\n\n=item 1\n\nHey\n\n"); + is_deeply( + \@errors, + [ [ 1, "=over without closing =back" ] ], + "no closing =back", + ); +} + +{ + for my $l_code ('L< foo>', 'L< bar>') { + my $input = "=pod\n\nAmbiguous space: $l_code\n"; + my @errors = errors("$input"); + is_deeply( + \@errors, + [ [ 3, "L<> starts or ends with whitespace" ] ], + "warning for space in $l_code", + ); + } +} + +{ + my $input = "=pod\n\nAmbiguous slash: L<I/O Operators|op/io>\n"; + my @errors = errors("$input"); + is_deeply( + \@errors, + [ [ 3, "alternative text 'I/O Operators' contains non-escaped | or /" ] ], + "warning for / in text part of L<>", + ); +} diff --git a/cpan/Pod-Simple/t/xhtml01.t b/cpan/Pod-Simple/t/xhtml01.t index b31260b6bd..fd177edf42 100644 --- a/cpan/Pod-Simple/t/xhtml01.t +++ b/cpan/Pod-Simple/t/xhtml01.t @@ -8,8 +8,8 @@ BEGIN { use strict; use lib '../lib'; -#use Test::More tests => 56; -use Test::More 'no_plan'; +use Test::More tests => 61; +#use Test::More 'no_plan'; use_ok('Pod::Simple::XHTML') or exit; @@ -662,7 +662,7 @@ EOHTML SKIP: for my $use_html_entities (0, 1) { if ($use_html_entities and not $Pod::Simple::XHTML::HAS_HTML_ENTITIES) { - skip("HTML::Entities not installed", 1); + skip("HTML::Entities not installed", 3); } local $Pod::Simple::XHTML::HAS_HTML_ENTITIES = $use_html_entities; initialize($parser, $results); @@ -698,6 +698,14 @@ is($results, <<"EOHTML", 'HTML Entities should be only for specified characters' EOHTML + # Keep =encoding out of content. + initialize($parser, $results); + $parser->parse_string_document("=encoding utf-8\n\n=head1 NAME\n"); + is($results, <<"EOHTML", 'Encoding should not be in content') +<h1 id="NAME">NAME</h1> + +EOHTML + } |