Pod-Tree
view release on metacpan or search on metacpan
}
sub Translate_Dir {
my $dir = $File::Find::name;
if ( $HTMLDir eq rel2abs File::Spec $dir) {
$File::Find::prune = 1;
return;
}
if ( $Options{module} and ( m(/t$) or m(/blib$) ) ) {
$File::Find::prune = 1;
return;
}
$dir =~ s/^\Q$PodDir/$HTMLDir/o;
-d $dir or MkDir $dir;
print "$File::Find::name\n";
}
sub Translate_POD {
m( \.(pm|pod)$ )x or return;
my $source = $File::Find::name;
Hidden($source) and return;
print "$source\n";
my $dest = $source;
$dest =~ s/^\Q$PodDir/$HTMLDir/o;
$dest =~ s( \.\w+$ )(.html)x;
my $depth = Depth($source);
my $pod = $source;
$pod =~ s(^\Q$PodDir\E/)();
$pod =~ s( \.\w+$ )()x;
$Index{$pod} = 1;
my $html = Pod::Tree::HTML->new( $source, $dest, %Options );
$html->set_options( depth => $depth );
$html->translate($Template);
}
sub Hidden {
my $source = shift;
$source =~ m(\.pm$) or return 0;
$source =~ s(\.pm$)(.pod);
-e $source;
}
sub Depth {
my $source = shift;
my $tree = Pod::Tree->new;
$tree->load_file($source);
my $children = $tree->get_root->get_children;
my @pod = grep { $_->is_pod } @$children;
my $node1 = $pod[1];
$node1 or return '';
my $text = $node1->get_deep_text;
my ($name) = split m(\s+-+\s+), $text;
$name =~ s(^\s+)();
my @name = split /::/, $name;
@name - 1;
}
sub Index {
my $index = "$HTMLDir/index.html";
my $fh = IO::File->new(">$index");
defined $fh or die "Can't open $index: $!\n";
my $stream = HTML::Stream->new($fh);
my $title = $Options{index};
my $bgcolor = $Options{bgcolor};
my $text = $Options{text};
$stream->HTML->HEAD;
$stream->TITLE->text($title)->_TITLE;
$stream->_HEAD->BODY( BGCOLOR => $bgcolor, TEXT => $text );
$stream->H1->t($title)->_H1;
Emit_Entries($stream);
$stream->_BODY->_HTML;
}
sub Emit_Entries {
my $stream = shift;
$stream->UL;
for my $entry ( sort keys %Index ) {
$stream->LI->A( HREF => "$entry.html" )->t($entry)->_A->_LI;
}
$stream->_UL;
}
sub Cleanup {
while (@Dirs) {
my $dir = pop @Dirs;
rmdir $dir; # does nothing unless $dir is empty
}
}
__END__
=head1 NAME
pods2html - translate a tree of PODs to HTML
=head1 SYNOPSIS
C<pods2html>
[C<--base> I<url>]
[C<--css> I<url>]
[C<--empty>]
[C<--index> I<title>]
( run in 0.920 second using v1.01-cache-2.11-cpan-71847e10f99 )