#!/usr/local/bin/perl use strict; use warnings; my (@Fld, $str, @a); line: while (<>) { chop; # strip record separator @Fld = split(' ', $_, 9999); procline: if (/^\.TH/) { $str=$Fld[2]; for (my $i=3; $i <= $#Fld; $i++) { $str .= " " . $Fld[$i]; } $str = &htmlify($str); printf("
\n", $str;
next line;
}
if (/^\.EX../) {
$str = substr($_, 4);
printf "
[##:##] %s
\n", &htmlify($str); next line; } if (/^\.L../) { $str = substr($_, 3); printf "
\n")); next line; } if (/^\.(FI|fi)/) { printf (("
\n")); next line; } if (/^\.s3/) { printf (("
\n")); next line; } if (/^\.s1/) {printf (("
See also : %s\n",&anchor($a[2]) ); for (my $i = 3; $i <= $#a ; ($i)++) { printf(", %s\n",&anchor($a[$i])); } while (<>) { chop; # strip record separator @a = split('[: ,.]+'); @Fld = split(' ', $_, 9999); if (/^\./) { goto procline; } for (my $i = 0; $i <= $#a ; ($i)++) { printf(", %s\n",&anchor($a[$i])); } } exit(0); } if (/^\./) { next line; } if (/^(See also|See Also|see also)/) { @a = split('[: ,.]+'); printf("See also : %s\n",&anchor($a[2]) ); for (my $i = 3; $i <= $#a ; ($i)++) { printf(", %s\n",&anchor($a[$i])); } while (<>) { chop; # strip record separator @a = split('[: ,.]+'); @Fld = split(' ', $_, 9999); if (/^\./) { goto procline; } for (my $i = 0; $i <= $#a ; ($i)++) { printf(", %s\n",&anchor($a[$i])); } } exit(0); } printf "%s\n", &htmlify($_); } #sub anchor { # local($_) = @_; # $file = $_ . ".t"; # if (-r $file) { # return ("" . $_ . ""); # } else { # return ( " " . $_ . " "); # } #} sub anchor { local ($_) = @_; my (@file,$file); $file = $_ . ".t"; # if (-r $file) { if (1) { $file =~ s/.t$/.html/; return ("$_"); } else { @file = <$_*t>; if (@file) { warn "Expanding $_ to $file[0]\n"; $file[0] =~ s/.t$/.html/; return ("$_"); } else { warn "Unable to link $_\n"; return ( "$_"); } } } # Translate HTML special characters into escape sequences sub htmlify { local ($_) = @_; s/^\"(.*)\"$/$1/; s/\\&//g; # a nothing character s/\&/&/g; s/\</g; s/\>/>/g; while (@a = /(\\\*Q)([A-Za-z0-9\-\.]+)(\\\*U)/) { /(\\\*Q)([A-Za-z\-]+)(\\\*U)/; $_ = $` . &anchor($a[1]) . $'; } while (@a = /(\\\*Q)(\"info )([A-Za-z0-9\-\.]+)(\\\*U)/) { /(\\\*Q)(\"info )([\w\-\.]+)(\\\*U)/; $_ = $` . "\"info " . &anchor($a[2]) . $'; } while (@a = /(\"info )([A-Za-z0-9\-\.]+)/) { /(\"info )([\w\-\.]+)/; $_ = $` . "\"info " . &anchor($a[1]) . $'; } s/\\\*Q//g; s/\\\*U/<\/em>/g; s/\\fI//g; s/\\fR/<\/em><\/em>/g; s/\\fB//g; s/\\fP/<\/strong><\/em>/g; s/\\\*\(bF//g; # bold font s/\\\*\(pF/<\/strong><\/em>/g; # pica font s/\\\*\(nF/<\/strong><\/em>/g; # normal font s/\\\*\(iF//g; # italic font s/\\\(mu/x/g; # multiply symbol s/\\ / /g; # should be non breaking space return $_; } #sub htmlify { # local($str) = @_; # $str; #}