Module:Loops

-- local p = {};

function template_args return mw.getCurrentFrame:getParent.args end

function p.translation(frame) local args = template_args local ret = '' for i, v in ipairs(args) do       ret = ret .. ' • '   end return frame:preprocess(ret .. '{' .. '{Translation/element}}') end

function p.joiner(frame) local args = template_args local ret = '' local joinText = '' if args[1] then joinText = args[1] end for i, v in ipairs(args) do       if i > 1 then ret = ret .. v .. joinText end end ret = string.gsub(ret, joinText .. '$', '') return ret end

function p.dots(frame) local args = template_args local ret = '' for i, v in ipairs(args) do       ret = ret .. v .. ' • '   end ret = string.gsub(ret, ' • $', '') return ret end

function p.loop(frame) local args = template_args local cols = frame.args[1] local template = frame.args[2] local ret = '' local data = {} local del = 0 if frame.args[3] then del = tonumber(frame.args[3]) end for i, v in ipairs(args) do       local ind = i - del local index = math.ceil(ind / cols) if ind > 0 then if not(data[index]) then data[index] = {} end data[index][((ind - 1) % cols) + 1] = v       end end for i, v in ipairs(data) do       ret = ret .. '{' .. '{' .. template .. '/element|' for i2, v2 in ipairs(v) do           ret = ret .. mw.text.trim(v2) .. '|'       end ret = ret .. '}}'   end return frame:preprocess(ret) end

return p --