Pod-HtmlEasy
view release on metacpan or search on metacpan
lib/Pod/HtmlEasy/Parser.pm view on Meta::CPAN
$ret
= $parser->{POD_HTMLEASY}
->{qq{ON_\U$seq_command\E}}( $parser->{POD_HTMLEASY},
$seq_argument );
}
else {
$ret = qq{$seq_command<$seq_argument>};
}
}
}
use warnings;
# Escape HTML-significant characters
_nul_escape( \$ret );
return $ret;
}
########################
# PREPROCESS_PARAGRAPH #
########################
Readonly::Scalar my $INFO_DONE => 3;
# Overrides preprocess_paragraph() provided by base class in Pod::Parser
# NB: the text is _not_ altered.
sub preprocess_paragraph {
my ( $parser, $text, $line_num ) = @_;
if ( $parser->{POD_HTMLEASY}{INFO_COUNT} == $INFO_DONE ) {
return $text;
}
if ( not exists $parser->{POD_HTMLEASY}{PACKAGE} ) {
if ( $text =~ m{package}smx ) {
my ($pack) = $text =~ m{package\s+(\w+(?:::\w+)*)}smx;
if ( defined $pack ) {
$parser->{POD_HTMLEASY}{PACKAGE} = $pack;
$parser->{POD_HTMLEASY}{INFO_COUNT}++;
}
}
}
if ( not exists $parser->{POD_HTMLEASY}{VERSION} ) {
if ( $text =~ m{VERSION}smx ) {
my ($ver) = $text =~ m{($RE{num}{decimal})}smx;
if ( defined $ver ) {
$parser->{POD_HTMLEASY}{VERSION} = $ver;
$parser->{POD_HTMLEASY}{INFO_COUNT}++;
}
}
}
# This situation is created by evt_on_head1()
# _do_title has found nothing following =head1 NAME, so it
# creates ...{TITLE}, and leaves it undef, so that it will be
# picked up here when the paragraph following is processed.
if ( ( exists $parser->{POD_HTMLEASY}{TITLE} )
and ( not defined $parser->{POD_HTMLEASY}{TITLE} ) )
{
my @lines = split m{\n}smx, $text;
my $tmp_text = shift @lines;
if ( not defined $tmp_text ) { return $text; }
$tmp_text =~ s{$RE{ws}{crop}}{}gsmx; # delete surrounding whitespace
$parser->{POD_HTMLEASY}{TITLE} = $tmp_text;
$parser->{POD_HTMLEASY}{INFO_COUNT}++;
}
return $text;
}
##############
# _ADD_INDEX #
##############
sub _add_index {
my ( $parser, $txt, $level ) = @_;
# Don't index star items
if ( $txt eq q{*} ) { return; }
if ( exists $parser->{INDEX_ITEM} ) {
my $max_len = $parser->{INDEX_LENGTH};
if ( length $txt > $max_len ) {
while ( substr( $txt, $max_len, 1 ) ne q{ } ) {
$max_len++;
last if $max_len >= length $txt;
}
if ( $max_len < length $txt ) {
$txt = substr( $txt, 0, $max_len ) . "...";
}
}
}
_remove_nul_escapes( \$txt );
push @{ $parser->{POD_HTMLEASY}->{INDEX} }, [ $level, $txt ];
return;
}
#############
# BEGIN_POD #
#############
# Overrides begin_pod() provided by base class in Pod::Parser
sub begin_pod {
my ($parser) = @_;
delete $parser->{POD_HTMLEASY}->{INDEX};
$parser->{POD_HTMLEASY}->{INDEX} = [];
return 1;
}
###########
# END_POD #
###########
# Overrides end_pod() provided by base class in Pod::Parser
sub end_pod {
( run in 0.679 second using v1.01-cache-2.11-cpan-71847e10f99 )