[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Autobuild-discuss] A few nits with autobuild
From: |
Julien ÉLIE |
Subject: |
Re: [Autobuild-discuss] A few nits with autobuild |
Date: |
Mon, 29 Aug 2011 09:29:35 +0200 |
User-agent: |
Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.7; fr; rv:1.9.2.20) Gecko/20110804 Thunderbird/3.1.12 |
Hi Simon,
>>> There is an issue with the value of HTML tokens:
>>> <h3><a name="inn-GCC 4.6.1">
>>>
>>> Spaces should be stripped, or converted to something else. (A dash?)
Here is a patch.
(Including the ", " issue at the same time.)
--- /home/iulius/scripts/autobuild/autobuild/autobuild 2011-08-29
08:23:40.000000000 +0200
+++ /home/iulius/scripts/autobuild/bin/autobuild 2011-08-29
09:25:50.000000000 +0200
@@ -18,6 +18,7 @@
# along with Autobuild. If not, see <http://www.gnu.org/licenses/>.
use strict;
+use warnings;
use Getopt::Long;
# Parse command line parameters.
@@ -43,7 +44,7 @@
'Ignore-files=s' => \$IgnoreFiles,
'inline-html=i' => \$InlineHTML);
-# Handle --verison.
+# Handle --version.
if ($PrintVersion) {
print "autobuild (Autobuild) 5.3\n";
print "Copyright (C) 2004, 2005, 2007, 2008, 2009, 2010 Simon Josefsson\n";
@@ -120,6 +121,23 @@
my (%Hostmodes);
my (%Modes);
+
+# Generate a valid XHTML token for IDs.
+sub tokenizeAnchor {
+ my $token = shift;
+
+ # In case the token is empty, return a valid one anyway.
+ return "Undefined" if not $token;
+
+ # Append "Autobuild-" at the beginning of the token if it does not
+ # start with a letter.
+ $token = "Autobuild-$token" if not $token =~ /^[A-Za-z]/;
+
+ # Replace invalid characters with a dash.
+ $token =~ s/[^A-Za-z0-9:_.-]/-/g;
+ return $token;
+}
+
foreach $arg (@ARGV) {
my (@files);
@@ -322,7 +340,7 @@
}
$bit = !$bit;
- print "<td><a href=\"#$project\">$project</a></td>\n";
+ print "<td><a
href=\"#".tokenizeAnchor($project)."\">$project</a></td>\n";
foreach $hosttype (sort keys %{$Hosttypes{$project}}) {
my $firstmode = 1;
@@ -331,7 +349,7 @@
my %DoneType;
if ($first) {
- print "<td><a href=\"#$project-$hosttype\">$hosttype</a>";
+ print "<td><a
href=\"#".tokenizeAnchor($project."-".$hosttype)."\">$hosttype</a>";
} else {
if ($bit) {
print "<tr bgcolor=\"lightgrey\">\n";
@@ -340,7 +358,7 @@
}
print "<td></td>\n";
if ($firstmode) {
- print "<td><a
href=\"#$project-$hosttype\">$hosttype</a>";
+ print "<td><a
href=\"#".tokenizeAnchor($project."-".$hosttype)."\">$hosttype</a>";
} else {
print "<td>";
}
@@ -377,9 +395,9 @@
} else {
print " from $Buildtype</td>\n";
}
- print "<td><a href=\"#$project-$Mode\">$Mode</a></td>\n";
- print "<td><a
href=\"#$project-$Revision\">$Revision</a></td>\n";
- print "<td><a
href=\"#$project-$Hostname\">$Hostname</a></td>\n";
+ print "<td><a
href=\"#".tokenizeAnchor($project."-".$Mode)."\">$Mode</a></td>\n";
+ print "<td><a
href=\"#".tokenizeAnchor($project."-".$Revision)."\">$Revision</a></td>\n";
+ print "<td><a
href=\"#".tokenizeAnchor($project."-".$Hostname)."\">$Hostname</a></td>\n";
print "<td>$Timestamp</td>\n";
print "<td><a href=\"$file\">\n";
if ($Status eq "ok") {
@@ -403,27 +421,41 @@
}
foreach $project (sort keys %Projects) {
+ my $count;
+
print "<hr />\n";
- print "<h2><a name=\"$project\">Project '$project'</a></h2>\n";
+ print "<h2><a name=\"".tokenizeAnchor($project)."\">Project
'$project'</a></h2>\n";
print "\n";
print "<p>Revisions (" . keys(%{$Revisions{$project}}) . "): ";
+ $count = 0;
foreach $revision (reverse sort { if ($a eq $b) { return 0; } else { my $i
= 0; do { my $j = substr ($a, $i, 1); my $k = substr ($b, $i, 1); if ($j != $k)
{ $j = substr ($a, $i); $k = substr ($b, $i); return $j <=> $k; } $i++; } while
($i < length($a)); } } keys %{$Revisions{$project}}) {
- print "<a href=\"#$project-$revision\">$revision</a>, ";
+ print ", " if $count;
+ print "<a
href=\"#".tokenizeAnchor($project."-".$revision)."\">$revision</a>";
+ $count++;
}
print "</p>\n";
- print "<p>Hosttypes (" . keys(%{$Hosttypes{$project}}) . "): ";
+ print "<p>Host types (" . keys(%{$Hosttypes{$project}}) . "): ";
+ $count = 0;
foreach $hosttype (sort keys %{$Hosttypes{$project}}) {
- print "<a href=\"#$project-$hosttype\">$hosttype</a>, \n";
+ print ", " if $count;
+ print "<a
href=\"#".tokenizeAnchor($project."-".$hosttype)."\">$hosttype</a>\n";
+ $count++;
}
print "</p>\n";
print "<p>Build hosts (" . keys(%{$Hostnames{$project}}) . "): ";
+ $count = 0;
foreach $hostname (sort keys %{$Hostnames{$project}}) {
- print "<a href=\"#$project-$hostname\">$hostname</a>, \n";
+ print ", " if $count;
+ print "<a
href=\"#".tokenizeAnchor($project."-".$hostname)."\">$hostname</a>\n";
+ $count++;
}
print "</p>\n";
print "<p>Modes (" . keys(%{$Modes{$project}}) . "): ";
+ $count = 0;
foreach $mode (sort keys %{$Modes{$project}}) {
- print "<a href=\"#$project-$mode\">$mode</a>, \n";
+ print ", " if $count;
+ print "<a href=\"#".tokenizeAnchor($project."-".$mode)."\">$mode</a>\n";
+ $count++;
}
print "</p>\n";
@@ -431,7 +463,7 @@
my $bit = 0;
print "<hr />\n";
- print "<h3><a name=\"$project-$revision\">\n";
+ print "<h3><a name=\"".tokenizeAnchor($project."-".$revision)."\">\n";
print "Summary for $project $revision</a></h3>\n";
print "\n";
print "<table border=\"0\">\n";
@@ -502,7 +534,7 @@
my $bit = 0;
print "<hr />\n";
- print "<h3><a name=\"$project-$hosttype\">\n";
+ print "<h3><a name=\"".tokenizeAnchor($project."-".$hosttype)."\">\n";
print "Summary for $project on $hosttype</a></h3>\n";
print "\n";
print "<table border=\"0\">\n";
@@ -575,7 +607,7 @@
my $bit = 0;
print "<hr />\n";
- print "<h3><a name=\"$project-$hostname\">\n";
+ print "<h3><a name=\"".tokenizeAnchor($project."-".$hostname)."\">\n";
print "Summary for $project built on $hostname</a></h3>\n";
print "\n";
print "<table border=\"0\">\n";
@@ -646,7 +678,7 @@
my $bit = 0;
print "<hr />\n";
- print "<h3><a name=\"$project-$mode\">\n";
+ print "<h3><a name=\"".tokenizeAnchor($project."-".$mode)."\">\n";
print "Summary for $project in mode $mode</a></h3>\n";
print "\n";
print "<table border=\"0\">\n";
--
Julien ÉLIE
« Le cercle est le plus long chemin d'un point au même point. »
(Tom Stoppard, _Every Good Boy Deserves Favour_)