%# $Id: doc.mc,v 1.1 2006-09-28 16:48:20 mike Exp $
<%once>
use Pod::Html;
use IO::Dir;
%once>
<%perl>
my $module = $r->param("module");
if (!defined $module) {
print "
\n";
render_doc_links($LIBDIR, "ZOOM", 6);
print "
\n";
} else {
print "Documentation for '$module'\n";
{ my $dir = "/tmp/pod2html"; mkdir $dir; chdir $dir || die $!; }
# For some reason, output to standard output doesn't appear
my $name = "ZOOM.html";
pod2html("$LIBDIR/$module", "--outfile=$name");
open F, "<$name" or die "can't open '$name': $!";
my $text = join("", );
close F;
$text =~ s/.*?//gs;
$text =~ s/<\/body.*//gs;
print $text;
}
sub render_doc_links {
my($base, $dir, $level) = @_;
my $dh = new IO::Dir("$base/$dir")
or die "can't open directory handle for '$base/$dir'";
print " " x $level, "$dir\n";
print " " x $level, "\n";
my(@files, @dirs);
while (my $file = $dh->read()) {
if ($file eq "." || $file eq ".." || $file eq "CVS") {
next;
} elsif (-d "$base/$dir/$file") {
push @dirs, $file;
} else {
push @files, $file;
}
}
foreach my $file (sort @files) {
print(" " x $level,
qq[ - $file
\n]);
}
foreach my $file (sort @dirs) {
render_doc_links($base, "$dir/$file", $level+1);
}
print " " x $level, "
\n";
undef $dh;
}
%perl>