blob: 414919880239214aed2fe154d7322c9b868e6e68 [file] [log] [blame]
#!/usr/bin/env lua
local io = require("io")
local table = require("table")
local authors = {}
local currentAuthor
local function pushValue(t, group, value)
local items = t[group] or {}
t[group] = items
items[#items + 1] = value
end
for line in io.lines() do
local author = line:match("^(.- %(%d*%):)$")
line = line:match("^%s*(.-)%s*$")
if author then
currentAuthor = authors[author] or {}
authors[author] = currentAuthor
elseif currentAuthor and #line > 0 then
local msg = line:gsub("^%s*","")
local group, data = msg:match("^([^:]*[%s]*:)[%s]*(.*)$")
if not group then
pushValue(currentAuthor, "-ungrouped-", msg)
else
pushValue(currentAuthor, group, data)
end
end
end
for author, groups in pairs(authors) do
print(author)
-- SORT GROUPS
local sorted = {}
for group, groupValues in pairs(groups) do
sorted[#sorted + 1] = {group, groupValues}
end
table.sort(sorted, function(a,b) return a[1] < b[1] end)
for _, gv in ipairs(sorted) do
local group, groupValues = unpack(gv)
print("\t" .. group)
for _, entry in ipairs(groupValues) do
print("\t\t" .. entry)
end
end
end