Module:ListPeople
Appearance
Documentation for this module may be created at Module:ListPeople/doc
local p = {}
function p.get()
local cargo = mw.ext.cargo
local peopleSet = {}
local function safeQuery(field)
local success, result = pcall(function()
return cargo.query('Compositions', field, {
groupBy = field,
limit = 1000
})
end)
if not success then
return {}
end
return result
end
local function addNames(resultTable, field)
for _, row in ipairs(resultTable) do
local names = row[field] or ''
for name in mw.text.gsplit(names, '[,;]') do
name = mw.text.trim(name)
if name ~= '' then
peopleSet[name] = true
end
end
end
end
-- Query and process both Composer and Arranger
local composers = safeQuery('Composer')
addNames(composers, 'Composer')
local arrangers = safeQuery('Arranger')
addNames(arrangers, 'Arranger')
-- Sort and format
local list = {}
for name in pairs(peopleSet) do
table.insert(list, name)
end
table.sort(list)
local output = {}
for _, name in ipairs(list) do
table.insert(output, '* [[' .. name .. ']]')
end
return table.concat(output, '\n')
end
return p