moth/bin/puzzles

48 lines
1.2 KiB
Plaintext
Raw Normal View History

2015-04-19 22:57:35 -06:00
#! /usr/bin/lua
2015-04-19 23:14:31 -06:00
package.path = "www/?.lua"
2015-04-19 22:57:35 -06:00
local koth = require "koth"
local max_by_cat = {}
local f = io.popen("ls packages")
for cat in f:lines() do
max_by_cat[cat] = 0
end
f:close()
for line in io.lines("state/points.log") do
local ts, team, cat, points, comment = line:match("^(%d+) (%w+) (%w+) (%d+) ?(.*)")
points = tonumber(points) or 0
-- Skip scores for removed categories
if (max_by_cat[cat] ~= nil) then
max_by_cat[cat] = math.max(max_by_cat[cat], points)
end
end
local body = "<dl>\n"
for cat, biggest in pairs(max_by_cat) do
local points, dirname
body = body .. "<dt>" .. cat .. "</dt>"
body = body .. "<dd>"
for line in io.lines("packages/" .. cat .. "/map.txt") do
points, dirname = line:match("^(%d+) (.*)")
points = tonumber(points)
body = body .. "<a href=\"" .. cat .. "/" .. dirname .. "/index.html\">" .. points .. "</a> "
if (points > biggest) then
break
end
end
if (points == biggest) then
body = body .. "<span title=\"Category Complete\">⁂</span>"
end
body = body .. "</dd>\n"
end
body = body .. "</dl>\n"
body = body .. "<p>Reloading this page periodically may yield updated puzzle lists.</p>"
2015-04-19 22:57:35 -06:00
koth.page("Open Puzzles", body)