Expunge revision histories in files.
[sw-tools] / perl / SWDoc.pm
index d519b11..8278552 100644 (file)
@@ -1,6 +1,6 @@
 # -*-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;
@@ -59,12 +49,38 @@ sub doc {
   while (my $line = $fh->getline()) {
     last if $line =~ /\f/;
     $line =~ s/\&/&/g;
-    $line =~ s/\</&lt;/g;
-    $line =~ s/\>/&gt;/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/\</&lt;</g;
+    $line =~ s/\>/>&gt;/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/\&lt\;\</&lt;/g;
+    $line =~ s/\>\&gt\;/&gt;/g;
+
     print $line;
   }
   print "</pre>\n";