Archive-RPM
view release on metacpan or search on metacpan
inc/Pod/Markdown.pm view on Meta::CPAN
#line 1
use 5.008;
use strict;
use warnings;
package Pod::Markdown;
our $VERSION = '1.100860';
# ABSTRACT: Convert POD to Markdown
use parent qw(Pod::Parser);
sub initialize {
my $self = shift;
$self->SUPER::initialize(@_);
$self->_private;
$self;
}
sub _private {
my $self = shift;
$self->{_MyParser} ||= {
Text => [], # final text
Indent => 0, # list indent levels counter
ListType => '-', # character on every item
searching => undef, # what are we searching for? (title, author etc.)
Title => undef, # page title
Author => undef, # page author
};
}
sub as_markdown {
my ($parser, %args) = @_;
my $data = $parser->_private;
my $lines = $data->{Text};
my @header;
if ($args{with_meta}) {
@header = $parser->_build_markdown_head;
}
join("\n" x 2, @header, @{$lines});
}
sub _build_markdown_head {
my $parser = shift;
my $data = $parser->_private;
my $paragraph = '';
if (defined $data->{Title}) {
$paragraph .= sprintf '[[meta title="%s"]]', $data->{Title};
}
if (defined $data->{Author}) {
$paragraph .= "\n" . sprintf '[[meta author="%s"]]', $data->{Author};
}
return $paragraph;
}
sub _save {
my ($parser, $text) = @_;
my $data = $parser->_private;
$text = $parser->_indent_text($text);
push @{ $data->{Text} }, $text;
return;
}
sub _indent_text {
my ($parser, $text) = @_;
my $data = $parser->_private;
my $level = $data->{Indent};
my $indent = undef;
if ($level > 0) {
$level--;
}
$indent = ' ' x ($level * 4);
my @lines = map { $indent . $_; } split(/\n/, $text);
return wantarray ? @lines : join("\n", @lines);
}
( run in 1.716 second using v1.01-cache-2.11-cpan-39bf76dae61 )