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 )