Perl6-Perldoc
view release on metacpan or search on metacpan
lib/Perl6/Perldoc/Parser.pm view on Meta::CPAN
}
# Build the table of contents for a given P<toc:> request...
sub _build_toc {
my ($data_structure, $placement_obj) = @_;
# Work out what's in the TOC (including the =item/=item1 alias)...
my $requested_types = $placement_obj->{target};
$requested_types =~ s{\A \s* toc: \s*}{}xms;
my %toc_wants;
@toc_wants{ split m/\s+/, $requested_types } = ();
if (exists $toc_wants{item} || exists $toc_wants{item1}) {
@toc_wants{qw< item item1 >} = ();
}
# Build flat list of tocitems into nested toclists...
my @toc_stack = [];
for my $toc_entry ( _walk_toc($data_structure, \%toc_wants) ) {
my $level = $toc_entry->{level};
# Increase nesting for higher numbered items...
lib/Perl6/Perldoc/Parser.pm view on Meta::CPAN
my ($text, $allow_ref, $config_stack_ref) = @_;
# Remove surrounding blank lines...
$text =~ s{\A ($HWS* \n)+ | (^ $HWS* \n?)+ \z}{}gxms;
# Remove top/bottom border...
$text =~ s{\A ($ROW_SEP_LINE)}{}xms; my $top_sep = $1 || q{};
$text =~ s{\n ($ROW_SEP_LINE) \Z}{}xms; my $bottom_sep = $1 || q{};
# Decompose into separated rows...
my ($first_row, $first_sep, @rest) = split m{($ROW_SEP_LINE)}xms, $text;
my $has_head = @rest != 0 && $first_sep =~ $NWS_ROW_SEP;
my @rows = @rest == 0 ? (split m{(\n)}xms, $text)
: @rest == 1 && !$bottom_sep ?
($first_row, $first_sep, split m{(\n)}xms, $rest[0])
: ($first_row, $first_sep, @rest)
;
my @separators = ($top_sep, @rows[grep {$_%2!=0} 0..$#rows], $bottom_sep);
my @cells = @rows[grep {$_%2==0} 0..$#rows];
return _build_table_rows(
$text, $has_head, \@cells, \@separators, $allow_ref, $config_stack_ref
);
}
( run in 0.503 second using v1.01-cache-2.11-cpan-71847e10f99 )