%# $Id: doc.mc,v 1.3 2006-11-16 12:16:18 mike Exp $ <%once> use Pod::Html; use IO::Dir; <%perl> my $libdir = $r->dir_config("IRSpyLibDir"); my $module = $r->param("module"); if (!defined $module) { 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; }