Module:ListField
Documentation for this module may be created at Module:ListField/doc
local getArgs = require('Module:Arguments').getArgs;
local defArgs = require('Module:Arguments').defaultArgs;
local listField = {};
function listField.func1( frame )
local args = defArgs(getArgs(frame), 1, "");
local arg = args[1];
local arg1 = args[2];
local arg2 = args[3];
local arg3 = args[4];
local text = ""
function trim(s) return (string.gsub(s, "^%s*(.-)%s*$", "%1")) end
list = {}
id = {}
for page,data in arg:gmatch("&&([%S]+)&&" .. arg1 .. " *= *([^\n]+)") do
if ((data ~= "-") and (data ~= " ")) then
data = trim(data)
tmp = list[data]
if (tmp == nil) then
list[data] = { page }
table.insert(id, data)
else
table.insert(tmp, page)
end
end
end
table.sort(id)
text = text .. "Total " .. table.getn(id) .. " groups."
local coff = tonumber(arg3)
if (coff == nil) then coff =0 else text = text .. "Showing groups more than size=" .. coff .. "only" end
for _,v in ipairs(id) do
if (table.getn(list[v]) > coff) then
text = text .. "* '''" .. v .. "'''"
table.sort(list[v])
for i = 1,table.getn(list[v]) do
if (list[v][i] ~= list[v][i + 1]) then
text = text .. "[[" .. arg2 .. ":" .. list[v][i] .."|".. list[v][i] .."]]" end
end
end
end
return text;
end
return listField;