Module:Loops
Jump to navigation
Jump to search
Documentation for this module may be created at Module:Loops/doc
local loops = {};
local function explode(list, delimiter)
if delimiter == nil then
delimiter = "%s"
end
t = {}
for str in string.gmatch(list, "([^" .. delimiter .. "]+)") do
table.insert(t, str)
end
return t
end
function loops.parseList(frame)
local list, delimiter, template;
local frameArgs = frame.args;
local templateArgs = {};
local templateArgPrefix = 'template!';
list = frameArgs.list;
delimiter = frameArgs.delimiter;
template = frameArgs.template;
for key, value in pairs(frameArgs) do
if string.find(key, templateArgPrefix) ~= nil then
templateArgs[string.sub(key, #templateArgPrefix+1)] = value
end
end
local result = {}
local values = explode(list, delimiter)
for key, value in pairs(values) do
table.insert(templateArgs, 1, value);
result[#result+1] = frame:expandTemplate{title = template, args = templateArgs };
end
return table.concat(result);
end
return loops;