# -*-perl-*-
#
-# $Id: SWDoc.pm,v 1.2 1999/08/18 17:10:07 mdw Exp $
+# $Id: SWDoc.pm,v 1.4 2004/04/08 01:52:19 mdw Exp $
#
# Display documentation files
#
# along with sw-tools; if not, write to the Free Software Foundation,
# Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-#----- Revision history -----------------------------------------------------
-#
-# $Log: SWDoc.pm,v $
-# Revision 1.2 1999/08/18 17:10:07 mdw
-# Slight improvements to URL and email address parsing.
-#
-# Revision 1.1 1999/07/30 18:46:37 mdw
-# New CGI script for browsing installed software and documentation.
-#
-
#----- Package preamble -----------------------------------------------------
package SWDoc;
while (my $line = $fh->getline()) {
last if $line =~ /\f/;
$line =~ s/\&/&/g;
- $line =~ s/\</</g;
- $line =~ s/\>/>/g;
- $line =~ s!\b(https?|ftp|file|news):[^]&)\s]*[^]&).,\s\']!<a href="$&">$&</a>!g;
- $line =~ s!info:([^]&)\s]*[^]&).,\s\'\"])!<a href="$ref?act=info&file=$1&node=Top">$&</a>!g;
- $line =~ s!(?:\bmailto:)?([^\s()&;:{}.,\`\"][^\s()&;:{}\`\"]*\@[^\s()&;:{}\'\"]*[^\s()&;:{}.,\'\"])!<a href="mailto:$1">$&</a>!g;
- $line =~ s!([-_.\w]+)\((\d+\w*)\)!SWMan::subst("$1($2)", $1, $2)!eg;
+ $line =~ s/\</<</g;
+ $line =~ s/\>/>>/g;
+
+ # --- Spot URLs (except `mailto') ---
+
+ $line =~ s! \b (http s? | ftp | file | news) :
+ [^])\s<>]* [^]<>&).,\s\']
+ !SWMan::urlsubst($&, $&)!egx;
+
+ # --- Spot email addresses (including `mailto' URLs) ---
+
+ $line =~ s! (?:\bmailto:)?
+ ([^\s()&;:<>&{}.,\`\'\"] [^\s()&;:<>&{}\`\'\"]*
+ \@
+ [^\s()&;:{}<>&\'\"]* [^\s()&;:{}<>&.,\'\"])
+ !<a href="mailto:$1">$&</a>!gx;
+
+ # --- Spot info references ---
+
+ $line =~ s! \b info: ([^]&)\s<>]* [^]&).,\s<>\'\"])
+ !<a href="$ref?act=info&file=$1&node=Top">$&</a>!gx;
+
+ # --- Spot manpage references ---
+
+ $line =~ s! ([-_.\w]+) \( (\d+\w*) \)
+ !SWMan::subst("$1($2)", $1, $2)!egx;
+
+ # --- Finally fix up the HTML properly ---
+
+ $line =~ s/\<\;\</</g;
+ $line =~ s/\>\>\;/>/g;
+
print $line;
}
print "</pre>\n";