App-RepoSync
view release on metacpan or search on metacpan
inc/Pod/Markdown.pm view on Meta::CPAN
$data->{Indent}--;
$data->{searching} = '';
} elsif ($command =~ m{item}xms) {
$paragraph = $parser->interpolate($paragraph, $line_num);
$paragraph =~ s{^\h* \* \h*}{}xms;
if ($data->{searching} eq 'listpara') {
$data->{searching} = 'listheadhuddled';
}
else {
$data->{searching} = 'listhead';
}
if (length $paragraph) {
$parser->textblock($paragraph, $line_num);
}
}
# ignore other commands
return;
}
sub verbatim {
my ($parser, $paragraph) = @_;
$parser->_save($paragraph);
}
sub textblock {
my ($parser, $paragraph, $line_num) = @_;
my $data = $parser->_private;
# interpolate the paragraph for embebed sequences
$paragraph = $parser->interpolate($paragraph, $line_num);
# clean the empty lines
$paragraph = $parser->_clean_text($paragraph);
# searching ?
if ($data->{searching} =~ m{title|author}xms) {
$data->{ ucfirst $data->{searching} } = $paragraph;
$data->{searching} = '';
} elsif ($data->{searching} =~ m{listhead(huddled)?$}xms) {
my $is_huddled = $1;
$paragraph = sprintf '%s %s', $data->{ListType}, $paragraph;
if ($is_huddled) {
$paragraph = $parser->_unsave() . "\n" . $paragraph;
}
$data->{searching} = 'listpara';
} elsif ($data->{searching} eq 'listpara') {
$data->{searching} = '';
}
# save the text
$parser->_save($paragraph);
}
sub interior_sequence {
my ($seq_command, $seq_argument, $pod_seq) = @_[1..3];
my %interiors = (
'I' => sub { return '_' . $_[1] . '_' }, # italic
'B' => sub { return '__' . $_[1] . '__' }, # bold
'C' => sub { return '`' . $_[1] . '`' }, # monospace
'F' => sub { return '`' . $_[1] . '`' }, # system path
'S' => sub { return '`' . $_[1] . '`' }, # code
'E' => sub {
my $charname = $_[1];
return '<' if $charname eq 'lt';
return '>' if $charname eq 'gt';
return '|' if $charname eq 'verbar';
return '/' if $charname eq 'sol';
return "&$charname;";
},
'L' => \&_resolv_link,
);
if (exists $interiors{$seq_command}) {
my $code = $interiors{$seq_command};
return $code->($seq_command, $seq_argument, $pod_seq);
} else {
return sprintf '%s<%s>', $seq_command, $seq_argument;
}
}
sub _resolv_link {
my ($cmd, $arg) = @_;
my $text = $arg =~ s"^(.+?)\|"" ? $1 : '';
if ($arg =~ m{^http|ftp}xms) { # direct link to a URL
$text ||= $arg;
return sprintf '[%s](%s)', $text, $arg;
} elsif ($arg =~ m{^/(.*)$}) {
$text ||= $1;
$text = $1;
return "[$text](\#pod_$1)";
} elsif ($arg =~ m{^(\w+(?:::\w+)*)$}) {
$text ||= $1;
return "[$text](http://search.cpan.org/perldoc?$1)";
} else {
return sprintf '%s<%s>', $cmd, $arg;
}
}
sub format_header {
my ($level, $paragraph) = @_[1,2];
sprintf '%s %s', '#' x $level, $paragraph;
}
1;
__END__
#line 341
( run in 0.868 second using v1.01-cache-2.11-cpan-cdf2f3d4e48 )