blob: bd5bb52a1adb32bb110a6294a6b21a348407bb92 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
|
-- Generate net/http/codes.lua from IANA HTTP status code registry
local xml = require "util.xml";
local registry = xml.parse(io.read("*a"), { allow_processing_instructions = true });
io.write([[
local response_codes = {
-- Source: http://www.iana.org/assignments/http-status-codes
]]);
for record in registry:get_child("registry"):childtags("record") do
-- Extract values
local value = record:get_child_text("value");
local description = record:get_child_text("description");
local ref = record:get_child_text("xref");
local code = tonumber(value);
-- Space between major groups
if code and code % 100 == 0 then
io.write("\n");
end
-- Reserved and Unassigned entries should be not be included
if description == "Reserved" or description == "Unassigned" or description == "(Unused)" then
code = nil;
end
-- Non-empty references become comments
if ref and ref:find("%S") then
ref = " -- " .. ref;
else
ref = "";
end
io.write((code and "\t[%d] = %q;%s\n" or "\t-- [%s] = %q;%s\n"):format(code or value, description, ref));
end
io.write([[};
for k,v in pairs(response_codes) do response_codes[k] = k.." "..v; end
return setmetatable(response_codes, { __index = function(_, k) return k.." Unassigned"; end })
]]);
|