Slight improvements to URL and email address parsing.
authormdw <mdw>
Wed, 18 Aug 1999 17:10:07 +0000 (17:10 +0000)
committermdw <mdw>
Wed, 18 Aug 1999 17:10:07 +0000 (17:10 +0000)
perl/SWDoc.pm
perl/SWInfo.pm
perl/SWMan.pm

index d87da58..d519b11 100644 (file)
@@ -1,6 +1,6 @@
 # -*-perl-*-
 #
-# $Id: SWDoc.pm,v 1.1 1999/07/30 18:46:37 mdw Exp $
+# $Id: SWDoc.pm,v 1.2 1999/08/18 17:10:07 mdw Exp $
 #
 # Display documentation files
 #
@@ -28,6 +28,9 @@
 #----- 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.
 #
@@ -58,9 +61,9 @@ sub doc {
     $line =~ s/\&/&amp;/g;
     $line =~ s/\</&lt;/g;
     $line =~ s/\>/&gt;/g;
-    $line =~ s!(http|ftp)://[^]&)\s]*[^]&).,\s\']!<a href="$&">$&</a>!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![^\s()&;{}.,\`\"][^\s()&;{}\`\"]*\@[^\s()&;{}\'\"]*[^\s()&;{}.,\'\"]!<a href="mailto:$&">$&</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;
     print $line;
   }
index 04898df..276ac05 100644 (file)
@@ -1,6 +1,6 @@
 # -*-perl-*-
 #
-# $Id: SWInfo.pm,v 1.1 1999/07/30 18:46:37 mdw Exp $
+# $Id: SWInfo.pm,v 1.2 1999/08/18 17:10:07 mdw Exp $
 #
 # Read and output GNU Info files
 #
@@ -28,6 +28,9 @@
 #----- Revision history -----------------------------------------------------
 #
 # $Log: SWInfo.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.
 #
@@ -141,8 +144,8 @@ sub info {
   }
   $out .= $n;
 
-  $out =~ s!(http|ftp)://[^]&)\s]*[^]&).,\s\'\"]!<a href="$&">$&</a>!g;
-  $out =~ s![^\s()&;{}.,\`\"][^\s()&;{}\`\"]*\@[^\s()&;{}\'\"]*[^\s()&;{}.,\'\"]!<a href="mailto:$&">$&</a>!g;
+  $out =~ s!\b(https?|ftp|file|news):[^]&)\s]*[^]&).,\s\'\"]!<a href="$&">$&</a>!g;
+  $out =~ s!(?:\bmailto:)?([^\s()&;:{}.,\`\"][^\s()&;:{}\`\"]*\@[^\s()&;:{}\'\"]*[^\s()&;:{}.,\'\"])!<a href="mailto:$1">$&</a>!g;
   $out =~ s!([-_.\w]+)\((\d+\w*)\)!SWMan::subst("$1($2)", $1, $2)!eg;
 
   header("Info: ($file)$node");
index 23f0104..b27fca8 100644 (file)
@@ -1,6 +1,6 @@
 # -*-perl-*-
 #
-# $Id: SWMan.pm,v 1.1 1999/07/30 18:46:37 mdw Exp $
+# $Id: SWMan.pm,v 1.2 1999/08/18 17:10:07 mdw Exp $
 #
 # Display and other fiddling of manual pages
 #
@@ -28,6 +28,9 @@
 #----- Revision history -----------------------------------------------------
 #
 # $Log: SWMan.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.
 #
@@ -288,18 +291,18 @@ sub man {
       # --- And email and hypertext references too ---
 
       $l =~ s! ((?:\<[bi]\>)*)         # Leading highlighting
-              ((?:http|ftp)            # A protocol name
-               ://                     # The important and obvious bit
+              ((?:https?|ftp|file|news) # A protocol name
+               :                       # The important and obvious bit
                [^]&)\s]+               # Most characters are allowed
                [^]&).,\s\'\"])         # Don't end on punctuation
               ((?:\</[bi]\>)*)         # Closing tags, optional
-            !<a href="$2">$&</a>!gx;
+            !$1<a href="$2">$&</a>$3!gx;
 
-      $l =~ s! ((?:\<[bi]\>)*)
-               ( [^\s()&;{}<>,.\`\"] [^\s()&;{}<>\`\"]* \@
-                 [^\s()&;{}<>\'\"]* [^\s()&;{}<>.,\'\"])
+      $l =~ s! ((?:\<[bi]\>)*(?:\bmailto:)?)
+               ( [^\s()&;:{}<>,.\`\"] [^\s()&;:{}<>\`\"]* \@
+                 [^\s()&;:{}<>\'\"]* [^\s()&;:{}<>.,\'\"])
                ((?:\</[bi]\>)*)
-             !<a href="mailto:$2">$&</a>!gx;
+             !$1<a href="mailto:$2">$&</a>$3!gx;
 
       # --- Done! ---