/usr/bin/mod2html is in libpod-tree-perl 1.25-1.
This file is owned by root:root, with mode 0o755.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 | #!/usr/bin/perl
eval 'exec /usr/bin/perl -S $0 ${1+"$@"}'
if 0; # not running under some shell
use strict;
use warnings;
use File::Find;
use File::Path;
use Getopt::Long;
use HTML::Stream;
use IO::File;
use Pod::Tree::HTML;
my %Options = ( bgcolor => '#ffffff' );
my %Index;
my $ok = GetOptions( \%Options, "base:s", "css:s", "index:s", "toc!", "hr:i", "bgcolor:s", "text:s" );
$ok or die "Bad command line options\n";
my ( $ModDir, $HTMLDir ) = @ARGV;
$HTMLDir or die "mod2html modDir HTMLDir\n";
$ModDir =~ s( /$ )()x;
$HTMLDir =~ s( /$ )()x;
mkpath($HTMLDir);
my $HTML_inode = ( stat $HTMLDir )[1];
umask 0022;
find(
{
wanted => \&Translate,
no_chdir => 1
},
$ModDir
);
Index() if $Options{index};
sub Translate {
-d and &Translate_Dir;
-f and &Translate_POD;
}
sub Translate_Dir {
my $dir = $File::Find::name;
my $inode = ( stat $dir )[1]; # always 0 on Win32
if ( $inode and $inode == $HTML_inode ) {
$File::Find::prune = 1;
return;
}
$dir =~ s/^$ModDir/$HTMLDir/o;
-d $dir or mkdir $dir, 0755 or die "Can't mkdir $dir: $!\n";
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/^$ModDir/$HTMLDir/;
$dest =~ s( \.\w+$ )(.html)x;
my $depth = Depth($source);
my $pod = $source;
$pod =~ s(^$ModDir/)();
$pod =~ s( \.\w+$ )()x;
$Index{$pod} = 1;
my $html = Pod::Tree::HTML->new( $source, $dest );
$html->set_options( %Options, depth => $depth );
$html->translate;
}
sub Hidden {
my $source = shift;
$source =~ m(\.pm$) or return 0;
$source =~ s(\.pm$)(.pod);
-e $source;
}
sub Depth {
my $path = shift;
$path =~ s(^$ModDir/)();
my @path = split m(/), $path;
@path - 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;
}
__END__
=head1 NAME
mod2html - translate module PODs to HTML
=head1 SYNOPSIS
C<mod2html>
[C<--base> I<url>]
[C<--css> I<url>]
[C<--index> I<title>]
[C<-->[C<no>]C<toc>] [C<--hr> I<level>]
[C<--bgcolor> I<#rrggbb>] [C<--text> I<#rrggbb>]
I<modDir> I<HTMLdir>
=head1 DESCRIPTION
C<mod2html> locates all the PODs under I<modDir>
translates them to HTML,
and writes them to a directory tree under F<HTMLdir>.
The directory tree maps the module namespaces.
It makes the HTML files world-readable.
=head1 OPTIONS
=over 4
=item C<--base> I<url>
Translate C<LE<lt>E<gt>> sequences into HTML
links relative to I<url>.
=item C<--css> I<url>
Specifies a Cascanding Style Sheet for the generated HTML page.
=item C<--index> I<title>
Writes an index of all the HTML files to I<HTMLDir>F</index.html>.
I<title> is used as the title of the index page.
=item C<-->[C<no>]C<toc>
Includes or omits the table of contents.
Default is to include the TOC.
=item C<--hr> I<level>
Controls the profusion of horizontal lines in the output, as follows:
level horizontal lines
0 none
1 between TOC and body
2 after each =head1
3 after each =head1 and =head2
Default is level 1.
=item C<--bgcolor> I<#rrggbb>
Set the background color to I<#rrggbb>.
Default is white.
=item C<--text> I<#rrggbb>
Set the text color to I<#rrggbb>.
Default is black.
=back
=head1 REQUIRES
L<C<Pod::Tree::HTML>>
=head1 SEE ALSO
L<C<pod2html>>, L<C<pods2html>>, L<C<Pod::Tree::HTML>>
=head1 AUTHOR
Steven McDougall, <swmcd@world.std.com>
=head1 COPYRIGHT
Copyright (c) 2003 by Steven McDougall. This program is free software;
you can redistribute it and/or modify it under the same terms as Perl.
|