fix CROASCII (B1.002:1982) filter
[webpac] / back2html.pm
index d61922f..860a1d6 100644 (file)
@@ -16,16 +16,21 @@ sub back2html {
                # convert spaces in left field to non-breaking spaces
                $items[0] =~ s#\s+# #g;
                # try to make link on right field
-               if ($items[1] =~ m#(http://[\S]+)\s*.*?#i) {
+               sub mkurl {
+                       my $url = shift || die "mkurl needs url as argument";
                        # chop URLS longer than 60 characters
-                       my $url = substr($1,0,60);
-                       $url .= "..." if (length($1) > 60);
-                       $items[1] =~ s#(.*)\b(http://[\S]+)(\b?.*)#$1<a href=\"$2\">$url</a>$3#g;
+                       my $txturl = substr($1,0,60);
+                       $txturl .= "..." if (length($1) > 60);
+                       return "<a href=\"$url\">$txturl</a>";
                }
+               $items[1] =~ s#(http://[\S]+)#mkurl($1)#gie;
                $out .= join("</td><td>",@items);
                $out .= "</td></tr>\n";
        }
-       $out =~ s/&lt;br\/*&gt;/<br\/>/g;
+       # put <br> back into html
+       $out =~ s,&lt;br/*&gt;,<br/>,gi;
+       # put <a href=xxx>yyyy</a> back into html
+       $out =~ s,&lt;(a\s+href=)(.+?)&gt;(.+?)&lt;(/a)&gt;,<$1$2>$3<$4>,gsi;
        return $out;
 }