App-Followme
view release on metacpan or search on metacpan
lib/App/Followme/PodData.pm view on Meta::CPAN
$content_block,
$title_parser);
my %mapping = ('title' => 'name',
'summary' => 'description',
'author' => 'author',
);
while (my ($cname, $sname) = each %mapping) {
$content{$cname} = $section->{$sname};
}
foreach my $cname (qw(author title)) {
my @tokens = web_split_at_tags($content{$cname});
$content{$cname} = web_only_text(@tokens);
}
}
if ($content{title}) {
my @title_parts = split(/\s+-+\s+/, $content{title}, 2);
$content{title} = $title_parts[0];
}
return %content;
}
#----------------------------------------------------------------------
# Convert Pod into html
sub fetch_as_html {
my ($self, $text) = @_;
my $psx = $self->initialize_parser();
my $html;
$psx->output_string(\$html);
$psx->parse_string_document($text);
return $self->extract_body($html);
}
#----------------------------------------------------------------------
# Split into text from file into section blocks.
sub fetch_sections {
my ($self, $text) = @_;
my %section;
$section{body} = $self->fetch_as_html($text);
$section{metadata} = '';
return \%section;
}
#----------------------------------------------------------------------
# Convert filename to url
sub filename_to_url {
my ($self, $directory, $filename, $ext) = @_;
$filename = $self->convert_filename($filename);
return $self->SUPER::filename_to_url($directory, $filename, $ext);
}
#----------------------------------------------------------------------
# Find the directory containing the pod files
sub find_base_directory {
my ($self)= @_;
my @package_path = split(/::/, $self->{package});
my $package_folder = catfile(@package_path);
my $package_file = "$package_folder.pm";
my @folders;
push(@folders, split(/\s*,\s*/, $self->{pod_directory}))
if $self->{pod_directory};
push(@folders, @INC);
for my $folder (@folders) {
if (-e catfile($folder, $package_file)) {
pop(@package_path);
return ($folder, \@package_path);
} elsif(-e catfile($folder, $package_folder)) {
return ($folder, \@package_path);
}
}
return;
}
#----------------------------------------------------------------------
# Treat all pod files as if they were in a single directory
sub find_matching_directories {
my ($self, $directory) = @_;
my @directories = ();
return @directories;
}
#----------------------------------------------------------------------
# Treat all pod files as if they were in a single directory
sub find_matching_files {
my ($self, $folder) = @_;
my ($filenames, $folders) = fio_visit($folder);
my @files;
foreach my $filename (@$filenames) {
push(@files, $filename) if $self->match_file($filename);
}
foreach my $folder (@$folders) {
push(@files, $self->find_matching_files($folder))
if $self->match_directory($folder);
}
return @files;
}
( run in 0.755 second using v1.01-cache-2.11-cpan-ceb78f64989 )