2010-07-20 12:06:33 -06:00
|
|
|
#! /usr/bin/awk -f
|
|
|
|
|
|
|
|
function esc(s) {
|
|
|
|
gsub(/&/, "&", s);
|
|
|
|
gsub(/</, "<", s);
|
|
|
|
gsub(/>/, ">", s);
|
|
|
|
return s;
|
|
|
|
}
|
|
|
|
|
|
|
|
BEGIN {
|
2010-07-22 18:08:55 -06:00
|
|
|
ngames = 20;
|
|
|
|
|
2010-07-20 12:06:33 -06:00
|
|
|
print "<!DOCTYPE html>";
|
|
|
|
print "<html>";
|
|
|
|
print " <head>";
|
|
|
|
print " <title>Dirtbags Tanks</title>";
|
2010-07-20 20:35:24 -06:00
|
|
|
print " <link rel=\"stylesheet\" href=\"dirtbags.css\" type=\"text/css\">";
|
2010-07-20 12:06:33 -06:00
|
|
|
print " </head>";
|
|
|
|
print " <body>";
|
|
|
|
print " <h1>Dirtbags Tanks</h1>";
|
|
|
|
|
2010-07-22 18:08:55 -06:00
|
|
|
print " <p>New here? Read the <a href=\"intro.html\">introduction</a>.</p>";
|
2010-07-20 12:06:33 -06:00
|
|
|
print " <h2>Rankings</h2>";
|
2010-07-22 18:08:55 -06:00
|
|
|
print " <p>Over the last 20 games only.</p>";
|
2010-07-20 12:06:33 -06:00
|
|
|
print " <ol>";
|
2010-07-20 20:35:24 -06:00
|
|
|
for (i = 1; i < ARGC; i += 1) {
|
|
|
|
id = ARGV[i];
|
|
|
|
|
2010-07-20 12:06:33 -06:00
|
|
|
if (1 == getline < (id "/name")) {
|
|
|
|
names[id] = esc($0);
|
|
|
|
} else {
|
|
|
|
names[id] = "<i>Unnamed</i>";
|
|
|
|
}
|
|
|
|
|
|
|
|
getline < (id "/color");
|
|
|
|
if (/^#[0-9A-Fa-f]+$/) {
|
|
|
|
color[id] = $0;
|
|
|
|
} else {
|
|
|
|
color[id] = "#c0c0c0";
|
|
|
|
}
|
|
|
|
|
2010-07-22 18:08:55 -06:00
|
|
|
|
|
|
|
for (j = 0; 1 == getline < (id "/points"); j += 1) {
|
|
|
|
pts[id, j % ngames] = int($0);
|
2010-07-20 12:06:33 -06:00
|
|
|
}
|
2010-07-22 18:08:55 -06:00
|
|
|
total = 0;
|
|
|
|
for (j = 0; j < ngames; j += 1) {
|
|
|
|
total += pts[id, j];
|
|
|
|
}
|
|
|
|
scores[total] = total;
|
|
|
|
points[id] = total;
|
2010-07-20 12:06:33 -06:00
|
|
|
}
|
|
|
|
while (1) {
|
|
|
|
# Find highest score
|
|
|
|
maxscore = -1;
|
|
|
|
for (p in scores) {
|
2010-07-21 15:54:46 -06:00
|
|
|
if (int(p) > maxscore) {
|
|
|
|
maxscore = int(p);
|
2010-07-20 12:06:33 -06:00
|
|
|
}
|
|
|
|
}
|
|
|
|
if (maxscore == -1) {
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
delete scores[maxscore];
|
|
|
|
|
|
|
|
for (id in points) {
|
|
|
|
if (points[id] == maxscore) {
|
2010-07-22 18:08:55 -06:00
|
|
|
printf("<li><span class=\"swatch\" style=\"background-color: %s;\">#</span> %s (%d points)</li>\n", color[id], names[id], points[id]);
|
2010-07-20 12:06:33 -06:00
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
print " </ol>";
|
|
|
|
|
|
|
|
print " <h2>Rounds</h2>";
|
|
|
|
print " <ul>";
|
|
|
|
getline rounds < "next-round";
|
|
|
|
for (i = rounds - 1; i >= 0; i -= 1) {
|
|
|
|
printf("<li><a href=\"round-%04d.html\">%04d</a></li>\n", i, i);
|
|
|
|
}
|
|
|
|
print " </ul>";
|
2010-07-22 18:08:55 -06:00
|
|
|
|
|
|
|
while (getline < "nav.html.inc") {
|
|
|
|
print;
|
|
|
|
}
|
|
|
|
|
2010-07-20 12:06:33 -06:00
|
|
|
print " </body>";
|
|
|
|
print "</html>";
|
|
|
|
}
|