--backlink="Back to Top"
-Adds "Back to Top" links in front of every HEAD1 heading (except for
-the first). By default, no backlink are being generated.
+Adds "Back to Top" links in front of every C<head1> heading (except for
+the first). By default, no backlinks are generated.
=item cachedir
--css=stylesheet
-Specify the URL of a cascading style sheet.
+Specify the URL of a cascading style sheet. Also disables all HTML/CSS
+C<style> attributes that are output by default (to avoid conflicts).
=item flush
--header
--noheader
-Creates header and footer blocks containing the text of the NAME
-section. By default, no headers are being generated.
+Creates header and footer blocks containing the text of the C<NAME>
+section. By default, no headers are generated.
=item help
--netscape
--nonetscape
-Use Netscape HTML directives when applicable. By default, they will
-B<not> be used.
+B<Deprecated>, has no effect. For backwards compatibility only.
=item outfile
--podpath=name:...:name
Specify which subdirectories of the podroot contain pod files whose
-HTML converted forms can be linked-to in cross-references.
+HTML converted forms can be linked to in cross references.
=item podroot
=head1 EXAMPLE
pod2html("pod2html",
- "--podpath=lib:ext:pod:vms",
+ "--podpath=lib:ext:pod:vms",
"--podroot=/usr/src/perl",
"--htmlroot=/perl/nmanual",
"--libpods=perlfunc:perlguts:perlvar:perlrun:perlop",
=head1 ENVIRONMENT
-Uses $Config{pod2html} to setup default options.
+Uses C<$Config{pod2html}> to setup default options.
=head1 AUTHOR
my %items_named = (); # for the multiples of the same item in perlfunc
my @items_seen = ();
-my $netscape = 0; # whether or not to use netscape directives.
my $title; # title to give the pod(s)
my $header = 0; # produce block header/footer
my $top = 1; # true if we are at the top of the doc. used
- # to prevent the first <HR> directive.
+ # to prevent the first <hr /> directive.
my $paragraph; # which paragraph we're processing (used
# for error messages)
my $ptQuote = 0; # status of double-quote conversion
@items_seen = ();
%items_named = ();
-$netscape = 0; # whether or not to use netscape directives.
$header = 0; # produce block header/footer
$title = ''; # title to give the pod(s)
$top = 1; # true if we are at the top of the doc. used
- # to prevent the first <HR> directive.
+ # to prevent the first <hr /> directive.
$paragraph = ''; # which paragraph we're processing (used
# for error messages)
%sections = (); # sections within this page
# parse the command-line parameters
parse_command_line();
+ # escape the backlink argument (same goes for title but is done later...)
+ $backlink = html_escape($backlink) if defined $backlink;
+
# set some variables to their default values if necessary
local *POD;
- unless (@ARGV && $ARGV[0]) {
+ unless (@ARGV && $ARGV[0]) {
$podfile = "-" unless $podfile; # stdin
open(POD, "<$podfile")
|| die "$0: cannot open $podfile file for input: $!\n";
} else {
$podfile = $ARGV[0]; # XXX: might be more filenames
*POD = *ARGV;
- }
+ }
$htmlfile = "-" unless $htmlfile; # stdout
$htmlroot = "" if $htmlroot eq "/"; # so we don't get a //
$htmldir =~ s#/\z## ; # so we don't get a //
if ( $htmlroot eq ''
- && defined( $htmldir )
+ && defined( $htmldir )
&& $htmldir ne ''
- && substr( $htmlfile, 0, length( $htmldir ) ) eq $htmldir
- )
+ && substr( $htmlfile, 0, length( $htmldir ) ) eq $htmldir
+ )
{
# Set the 'base' url for this file, so that we can use it
- # as the location from which to calculate relative links
+ # as the location from which to calculate relative links
# to other files. If this is '', then absolute links will
# be used throughout.
$htmlfileurl= "$htmldir/" . substr( $htmlfile, length( $htmldir ) + 1);
# put a title in the HTML file if one wasn't specified
if ($title eq '') {
TITLE_SEARCH: {
- for my $i ( 0..$#poddata ) {
+ for (my $i = 0; $i < @poddata; $i++) {
if ($poddata[$i] =~ /^=head1\s*NAME\b/m) {
- for my $para ( @poddata[$i, $i+1] ) {
+ for my $para ( @poddata[$i, $i+1] ) {
last TITLE_SEARCH
if ($title) = $para =~ /(\S+\s+-+.*\S)/s;
}
- }
+ }
- }
+ }
}
}
if (!$title and $podfile =~ /\.pod\z/) {
# probably a split pod so take first =head[12] as title
- for my $i ( 0..$#poddata ) {
+ for (my $i = 0; $i < @poddata; $i++) {
last if ($title) = $poddata[$i] =~ /^=head[12]\s*(.*)/;
- }
+ }
warn "adopted '$title' as title for $podfile\n"
if $verbose and $title;
- }
+ }
if ($title) {
$title =~ s/\s*\(.*\)//;
} else {
$title = ($podfile eq "-" ? 'No Title' : $1);
warn "using $title" if $verbose;
}
- my $csslink = $css ? qq(\n<LINK REL="stylesheet" HREF="$css" TYPE="text/css">) : '';
- $csslink =~ s,\\,/,g;
- $csslink =~ s,(/.):,$1|,;
-
- my $block = $header ? <<END_OF_BLOCK : '';
-<TABLE BORDER=0 CELLPADDING=0 CELLSPACING=0 WIDTH=100%>
-<TR><TD CLASS=block VALIGN=MIDDLE WIDTH=100% BGCOLOR="#cccccc">
-<FONT SIZE=+1><STRONG><P CLASS=block> $title</P></STRONG></FONT>
-</TD></TR>
-</TABLE>
+ $title = html_escape($title);
+
+ my $csslink = '';
+ my $bodystyle = ' style="background-color: white"';
+ my $tdstyle = ' style="background-color: #cccccc"';
+
+ if ($css) {
+ $csslink = qq(\n<link rel="stylesheet" href="$css" type="text/css" />);
+ $csslink =~ s,\\,/,g;
+ $csslink =~ s,(/.):,$1|,;
+ $bodystyle = '';
+ $tdstyle = '';
+ }
+
+ my $block = $header ? <<END_OF_BLOCK : '';
+<table border="0" width="100%" cellspacing="0" cellpadding="3">
+<tr><td class="block"$tdstyle valign="middle">
+<big><strong><span class="block"> $title</span></strong></big>
+</td></tr>
+</table>
END_OF_BLOCK
print HTML <<END_OF_HEAD;
-<HTML>
-<HEAD>
-<TITLE>$title</TITLE>$csslink
-</HEAD>
-
-<BODY>
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+head>
+<title>$title</title>$csslink
+<link rev="made" href="mailto:$Config{perladmin}" />
+</head>
+
+<body$bodystyle>
$block
END_OF_HEAD
# still generate an index, but surround it with an html comment.
# that way some other program can extract it if desired.
$index =~ s/--+/-/g;
- print HTML "<A NAME=\"__index__\"></A>\n";
+ print HTML "<p><a name=\"__index__\"></a></p>\n";
print HTML "<!-- INDEX BEGIN -->\n";
print HTML "<!--\n" unless $doindex;
print HTML $index;
print HTML "-->\n" unless $doindex;
print HTML "<!-- INDEX END -->\n\n";
- print HTML "<HR>\n" if $doindex and $index;
+ print HTML "<hr />\n" if $doindex and $index;
# now convert this file
my $after_item; # set to true after an =item
+ my $need_dd = 0;
warn "Converting input file $podfile\n" if $verbose;
foreach my $i (0..$#poddata){
$ptQuote = 0; # status of quote conversion
if (/^(=.*)/s) { # is it a pod directive?
$ignore = 0;
$after_item = 0;
+ $need_dd = 0;
$_ = $1;
if (/^=begin\s+(\S+)\s*(.*)/si) {# =begin
process_begin($1, $2);
} elsif (/^=item\s*(.*\S)?/sm) { # =item text
warn "$0: $podfile: =item without bullet, number or text"
. " in paragraph $paragraph.\n" if !defined($1) or $1 eq '';
- process_item( $1 );
+ $need_dd = process_item( $1 );
$after_item = 1;
} elsif (/^=over\s*(.*)/) { # =over N
process_over();
else {
next if $ignore;
next if @begin_stack && $begin_stack[-1] ne 'html';
- print HTML and next if @begin_stack && $begin_stack[-1] eq 'html';
+ print HTML and next if @begin_stack && $begin_stack[-1] eq 'html';
+ print HTML "<dd>\n" if $need_dd;
my $text = $_;
if( $text =~ /\A\s+/ ){
process_pre( \$text );
- print HTML "<PRE>\n$text</PRE>\n";
+ print HTML "<pre>\n$text</pre>\n";
} else {
process_text( \$text );
}
}
if( $all > 0 ){
- $text =~ s/\t+/<TD>/g;
- $text =~ s/^/<TR><TD>/gm;
- $text = '<TABLE CELLSPACING=0 CELLPADDING=0>' .
- $text . '</TABLE>';
+ $text =~ s/\t+/<td>/g;
+ $text =~ s/^/<tr><td>/gm;
+ $text = '<table cellspacing="0" cellpadding="0">' .
+ $text . '</table>';
}
}
}
print HTML "$text\n";
$after_lpar = 1;
} else {
- print HTML "<P>$text</P>\n";
+ print HTML "<p>$text</p>\n";
}
}
+ print HTML "</dd>\n" if $need_dd;
$after_item = 0;
}
}
finish_list();
# link to page index
- print HTML "<P><A HREF=\"#__index__\"><SMALL>$backlink</SMALL></A></P>\n"
+ print HTML "<p><a href=\"#__index__\"><small>$backlink</small></a></p>\n"
if $doindex and $index and $backlink;
print HTML <<END_OF_TAIL;
$block
-</BODY>
+</body>
-</HTML>
+</html>
END_OF_TAIL
# close the html file
directives in as targets of C<> and implicit links (empty
by default). note, these are not filenames, but rather
page names like those that appear in L<> links.
- --[no]netscape - will use netscape html directives when applicable.
- (default is not to use them).
--outfile - filename for the resulting html file (output sent to
stdout by default).
--podpath - colon-separated list of directories containing library
(default behaviour).
--title - title that will appear in resulting html file.
--[no]verbose - self-explanatory (off by default).
+ --[no]netscape - deprecated, has no effect. for backwards compatibility only.
END_OF_USAGE
$htmlroot = $opt_htmlroot if defined $opt_htmlroot;
$doindex = $opt_index if defined $opt_index;
$podfile = $opt_infile if defined $opt_infile;
- $netscape = $opt_netscape if defined $opt_netscape;
$htmlfile = $opt_outfile if defined $opt_outfile;
$podroot = $opt_podroot if defined $opt_podroot;
$quiet = $opt_quiet if defined $opt_quiet;
# scan for =head directives, note their name, and build an index
# pointing to each of them.
foreach my $line (@data) {
- if ($line =~ /^=(head)([1-6])\s+(.*)/) {
- ($tag, $which_head, $otitle) = ($1,$2,$3);
+ if ($line =~ /^=(head)([1-6])\s+(.*)/) {
+ ($tag, $which_head, $otitle) = ($1,$2,$3);
- my $title = depod( $otitle );
- my $name = htmlify( $title );
- $$sections{$name} = 1;
- $title = process_text( \$otitle );
+ my $title = depod( $otitle );
+ my $name = htmlify( $title );
+ $$sections{$name} = 1;
+ $name =~ s/\s/_/g; # htmlify keeps spaces but we don't want them here..
+ $title = process_text( \$otitle );
while ($which_head != $listdepth) {
if ($which_head > $listdepth) {
- $index .= "\n" . ("\t" x $listdepth) . "<UL>\n";
+ $index .= "\n" . ("\t" x $listdepth) . "<ul>\n";
$listdepth++;
} elsif ($which_head < $listdepth) {
$listdepth--;
- $index .= "\n" . ("\t" x $listdepth) . "</UL>\n";
+ $index .= "\n" . ("\t" x $listdepth) . "</ul>\n";
}
}
- $index .= "\n" . ("\t" x $listdepth) . "<LI>" .
- "<A HREF=\"#" . $name . "\">" .
- $title . "</A></LI>";
+ $index .= "\n" . ("\t" x $listdepth) . "<li>" .
+ "<a href=\"#" . $name . "\">" .
+ $title . "</a></li>";
}
}
# finish off the lists
while ($listdepth--) {
- $index .= "\n" . ("\t" x $listdepth) . "</UL>\n";
+ $index .= "\n" . ("\t" x $listdepth) . "</ul>\n";
}
# get rid of bogus lists
- $index =~ s,\t*<UL>\s*</UL>\n,,g;
+ $index =~ s,\t*<ul>\s*</ul>\n,,g;
$ignore = 1; # restore old value;
}
}
- print HTML "<P>\n";
+ print HTML "<p>\n";
if( $level == 1 && ! $top ){
- print HTML "<A HREF=\"#__index__\"><SMALL>$backlink</SMALL></A>\n"
- if $hasindex and $backlink;
- print HTML "<HR>\n"
+ print HTML "<a href=\"#__index__\"><small>$backlink</small></a>\n"
+ if $hasindex and $backlink;
+ print HTML "</p>\n<hr />\n"
+ } else {
+ print HTML "</p>\n";
}
my $name = htmlify( depod( $heading ) );
+ $name =~ s/\s/_/g; # htmlify keeps spaces but we don't want them here...
my $convert = process_text( \$heading );
- print HTML "<H$level><A NAME=\"$name\">$convert</A></H$level>\n";
+ print HTML "<h$level><a name=\"$name\">$convert</a></h$level>\n";
}
$EmittedItem = $item;
### print STDERR "emit_item_tag=$item ($text)\n";
- print HTML '<STRONG>';
+ print HTML '<strong>';
if ($items_named{$item}++) {
print HTML process_text( \$otext );
} else {
my $name = 'item_' . $item;
- print HTML qq{<A NAME="$name">}, process_text( \$otext ), '</A>';
+ $name =~ s/\s/_/g; # we don't want spaces here...
+ print HTML qq{<a name="$name">}, process_text( \$otext ), '</a>';
}
- print HTML "</STRONG><BR>\n";
+ print HTML "</strong><br />\n";
undef( $EmittedItem );
}
push( @listend, "</$tag>" );
print HTML "<$tag>\n";
}
- print HTML $tag eq 'DL' ? '<DT>' : '<LI>';
+ my $emitted = $tag eq 'dl' ? 'dt' : 'li';
+ print HTML "<$emitted>";
+ return $emitted;
}
#
#
sub process_item {
my( $otext ) = @_;
+ my $need_dd = 0; # set to 1 if we need a <dd></dd> after an item
# lots of documents start a list without doing an =over. this is
# bad! but, the proper thing to do seems to be to just assume
# formatting: insert a paragraph if preceding item has >1 paragraph
if( $after_lpar ){
- print HTML "<P></P>\n";
+ print HTML "<p></p>\n";
$after_lpar = 0;
}
# remove formatting instructions from the text
my $text = depod( $otext );
+ my $emitted; # the tag actually emitted, used for closing
+
# all the list variants:
if( $text =~ /\A\*/ ){ # bullet
- emit_li( 'UL' );
- if ($text =~ /\A\*\s+(.+)\Z/s ) { # with additional text
- my $tag = $1;
- $otext =~ s/\A\*\s+//;
- emit_item_tag( $otext, $tag, 1 );
- }
+ $emitted = emit_li( 'ul' );
+ if ($text =~ /\A\*\s+(.+)\Z/s ) { # with additional text
+ my $tag = $1;
+ $otext =~ s/\A\*\s+//;
+ emit_item_tag( $otext, $tag, 1 );
+ }
} elsif( $text =~ /\A\d+/ ){ # numbered list
- emit_li( 'OL' );
- if ($text =~ /\A(?>\d+\.?)\s*(.+)\Z/s ) { # with additional text
- my $tag = $1;
- $otext =~ s/\A\d+\.?\s*//;
- emit_item_tag( $otext, $tag, 1 );
- }
+ $emitted = emit_li( 'ol' );
+ if ($text =~ /\A(?>\d+\.?)\s*(.+)\Z/s ) { # with additional text
+ my $tag = $1;
+ $otext =~ s/\A\d+\.?\s*//;
+ emit_item_tag( $otext, $tag, 1 );
+ }
} else { # definition list
- emit_li( 'DL' );
- if ($text =~ /\A(.+)\Z/s ){ # should have text
- emit_item_tag( $otext, $text, 1 );
- }
- print HTML '<DD>';
+ $emitted = emit_li( 'dl' );
+ if ($text =~ /\A(.+)\Z/s ){ # should have text
+ emit_item_tag( $otext, $text, 1 );
+ }
+ $need_dd = 1;
}
+ print HTML "</$emitted>" if $emitted;
print HTML "\n";
+ return $need_dd;
}
#
# $listend[$listlevel] may have never been initialized.
$listlevel--;
if( defined $listend[$listlevel] ){
- print HTML '<P></P>' if $after_lpar;
+ print HTML '<p></p>' if $after_lpar;
print HTML $listend[$listlevel];
print HTML "\n";
pop( @listend );
for my $ext (qw[.png .gif .jpeg .jpg .tga .pcl .bmp]) {
$text .= $ext, last if -r "$text$ext";
}
- print HTML qq{<p align = "center"><img src = "$text" alt = "$text illustration"></p>};
+ print HTML qq{<p align="center"><img src="$text" alt="$text illustration" /></p>};
}
}
$whom = lc($whom);
if ($begin_stack[-1] ne $whom ) {
die "Unmatched begin/end at chunk $paragraph\n"
- }
+ }
pop( @begin_stack );
}
#
-# process_pre - indented paragraph, made into <PRE></PRE>
+# process_pre - indented paragraph, made into <pre></pre>
#
sub process_pre {
my( $text ) = @_;
#eg;
# convert some special chars to HTML escapes
- $rest =~ s/&/&/g;
- $rest =~ s/</</g;
- $rest =~ s/>/>/g;
- $rest =~ s/"/"/g;
+ $rest = html_escape($rest);
# try and create links for all occurrences of perl.* within
# the preformatted text.
(\s*)(perl\w+)
}{
if ( defined $pages{$2} ){ # is a link
- qq($1<A HREF="$htmlroot/$pages{$2}">$2</A>);
+ qq($1<a href="$htmlroot/$pages{$2}">$2</a>);
} elsif (defined $pages{dosify($2)}) { # is a link
- qq($1<A HREF="$htmlroot/$pages{dosify($2)}">$2</A>);
+ qq($1<a href="$htmlroot/$pages{dosify($2)}">$2</a>);
} else {
"$1$2";
}
}xeg;
$rest =~ s{
- (<A\ HREF="?) ([^>:]*:)? ([^>:]*) \.pod: ([^>:]*:)?
+ (<a\ href="?) ([^>:]*:)? ([^>:]*) \.pod: ([^>:]*:)?
}{
my $url ;
if ( $htmlfileurl ne '' ){
- # Here, we take advantage of the knowledge
+ # Here, we take advantage of the knowledge
# that $htmlfileurl ne '' implies $htmlroot eq ''.
# Since $htmlroot eq '', we need to prepend $htmldir
# on the fron of the link to get the absolute path
file
wais
ftp
- } )
+ } )
. ')';
-
+
my $ltrs = '\w';
my $gunk = '/#~:.?+=&%@!\-';
my $punc = '.:?\-';
| # or else
$ # then end of the string
)
- }{<A HREF="$1">$1</A>}igox;
+ }{<a href="$1">$1</a>}igox;
# text should be as it is (verbatim)
$$text = $rest;
if( $args =~ /^\d+$/ ){
my $url = page_sect( $word, '' );
if( defined $url ){
- $word = "<A HREF=\"$url\">the $word manpage</A>";
+ $word = "<a href=\"$url\">the $word manpage</a>";
next;
}
}
} elsif ($word =~ m,^\w+://\w,) {
# looks like a URL
# Don't relativize it: leave it as the author intended
- $word = qq(<A HREF="$word">$word</A>);
+ $word = qq(<a href="$word">$word</a>);
} elsif ($word =~ /[\w.-]+\@[\w-]+\.\w/) {
# looks like an e-mail address
my ($w1, $w2, $w3) = ("", $word, "");
($w1, $w2, $w3) = ("(", $1, ")$2") if $word =~ /^\((.*?)\)(,?)/;
($w1, $w2, $w3) = ("<", $1, ">$2") if $word =~ /^<(.*?)>(,?)/;
- $word = qq($w1<A HREF="mailto:$w2">$w2</A>$w3);
- } elsif ($word !~ /[a-z]/ && $word =~ /[A-Z]/) { # all uppercase?
- $word = html_escape($word) if $word =~ /["&<>]/;
- $word = "\n<FONT SIZE=-1>$word</FONT>" if $netscape;
- } else {
+ $word = qq($w1<a href="mailto:$w2">$w2</a>$w3);
+ } else {
$word = html_escape($word) if $word =~ /["&<>]/;
}
}
if( $func eq 'B' ){
# B<text> - boldface
- $res = '<STRONG>' . process_text1( $lev, $rstr ) . '</STRONG>';
+ $res = '<strong>' . process_text1( $lev, $rstr ) . '</strong>';
} elsif( $func eq 'C' ){
- # C<code> - can be a ref or <CODE></CODE>
+ # C<code> - can be a ref or <code></code>
# need to extract text
my $par = go_ahead( $rstr, 'C', $closing );
my $text = depod( $par );
### my $x = $par =~ /[BI]</ ? 'yes' : 'no' ;
- ### print STDERR "-->call emit_C($par) lev=$lev, par with BI=$x\n";
+ ### print STDERR "-->call emit_C($par) lev=$lev, par with BI=$x\n";
$res = emit_C( $text, $lev > 1 || ($par =~ /[BI]</) );
} elsif( $func eq 'F' ){
# F<filename> - italizice
- $res = '<EM>' . process_text1( $lev, $rstr ) . '</EM>';
+ $res = '<em>' . process_text1( $lev, $rstr ) . '</em>';
} elsif( $func eq 'I' ){
# I<text> - italizice
- $res = '<EM>' . process_text1( $lev, $rstr ) . '</EM>';
+ $res = '<em>' . process_text1( $lev, $rstr ) . '</em>';
} elsif( $func eq 'L' ){
# L<link> - link
- ## L<text|cross-ref> => produce text, use cross-ref for linking
+ ## L<text|cross-ref> => produce text, use cross-ref for linking
## L<cross-ref> => make text from cross-ref
## need to extract text
my $par = go_ahead( $rstr, 'L', $closing );
if( $par =~ s{^([^|]+)\|}{} ){
$linktext = $1;
}
-
+
# make sure sections start with a /
$par =~ s{^"}{/"};
# check for link patterns
if( $par =~ m{^([^/]+?)/(?!")(.*?)$} ){ # name/ident
- # we've got a name/ident (no quotes)
+ # we've got a name/ident (no quotes)
( $page, $ident ) = ( $1, $2 );
### print STDERR "--> L<$par> to page $page, ident $ident\n";
### print STDERR "got page/section url=$url\n";
last RESOLVE;
}
- ## no luck: go for an ident
+ ## no luck: go for an ident
if( $section ){
$ident = $section;
} else {
# now we have a URL or just plain code
$$rstr = $linktext . '>' . $$rstr;
if( defined( $url ) ){
- $res = "<A HREF=\"$url\">" . process_text1( $lev, $rstr ) . '</A>';
+ $res = "<a href=\"$url\">" . process_text1( $lev, $rstr ) . '</a>';
} else {
- $res = '<EM>' . process_text1( $lev, $rstr ) . '</EM>';
+ $res = '<em>' . process_text1( $lev, $rstr ) . '</em>';
}
} elsif( $func eq 'S' ){
$$rstr =~ s/^[^>]*>//;
} elsif( $func eq 'Z' ){
- # Z<> - empty
+ # Z<> - empty
warn "$0: $podfile: invalid X<> in paragraph $paragraph."
unless $$rstr =~ s/^>//;
if( defined( $url ) &&
(!defined( $EmittedItem ) || $EmittedItem ne $fid ) ){
- $res = "<A HREF=\"$url\"><CODE>$linktext</CODE></A>";
+ $res = "<a href=\"$url\"><code>$linktext</code></a>";
} elsif( 0 && $nocode ){
$res = $linktext;
} else {
- $res = "<CODE>$linktext</CODE>";
+ $res = "<code>$linktext</code>";
}
return $res;
}
$rest =~ s/</</g;
$rest =~ s/>/>/g;
$rest =~ s/"/"/g;
+ $rest =~ s/'/'/g;
return $rest;
-}
+}
#
# an intermediate page that is an index to all such pages.
my $page_name = $page ;
$page_name =~ s,^.*/,,s ;
- if ( defined( $pages{ $page_name } ) &&
- $pages{ $page_name } =~ /([^:]*$page)\.(?:pod|pm):/
+ if ( defined( $pages{ $page_name } ) &&
+ $pages{ $page_name } =~ /([^:]*$page)\.(?:pod|pm):/
) {
$page = $1 ;
}
sub relativize_url {
my ($dest,$source) = @_ ;
- my ($dest_volume,$dest_directory,$dest_file) =
+ my ($dest_volume,$dest_directory,$dest_file) =
File::Spec::Unix->splitpath( $dest ) ;
$dest = File::Spec::Unix->catpath( $dest_volume, $dest_directory, '' ) ;
- my ($source_volume,$source_directory,$source_file) =
+ my ($source_volume,$source_directory,$source_file) =
File::Spec::Unix->splitpath( $source ) ;
$source = File::Spec::Unix->catpath( $source_volume, $source_directory, '' ) ;
$rel_path = File::Spec::Unix->abs2rel( $dest, $source ) ;
}
- if ( $rel_path ne '' &&
+ if ( $rel_path ne '' &&
substr( $rel_path, -1 ) ne '/' &&
- substr( $dest_file, 0, 1 ) ne '#'
+ substr( $dest_file, 0, 1 ) ne '#'
) {
$rel_path .= "/$dest_file" ;
}
}
confess "url has space: $url" if $url =~ /"[^"]*\s[^"]*"/;
- }
+ }
return( $url, $fid );
}
#
sub finish_list {
while ($listlevel > 0) {
- print HTML "</DL>\n";
+ print HTML "</dl>\n";
$listlevel--;
}
}
} else {
$string = $_[0];
depod1( \$string );
- }
+ }
}
sub depod1($;$$){
# X<> - ignore
$$rstr =~ s/^[^>]*>//;
} elsif( $func eq 'Z' ){
- # Z<> - empty
+ # Z<> - empty
$$rstr =~ s/^>//;
} else {
# all others: either recurse into new function or
#
sub make_URL_href($){
my( $url ) = @_;
- if( $url !~
- s{^(http:[-\w/#~:.+=&%@!]+)(\?.*)$}{<A HREF="$1$2">$1</A>}i ){
- $url = "<A HREF=\"$url\">$url</A>";
+ if( $url !~
+ s{^(http:[-\w/#~:.+=&%@!]+)(\?.*)$}{<a href="$1$2">$1</a>}i ){
+ $url = "<a href=\"$url\">$url</a>";
}
return $url;
}