Módulo:Zona de pruebas/Qwertyytrewqqwerty/MiBucleFor
Apariencia
Este módulo no tiene página de documentación[crear]
p = {}
function p.main(frame)
local paramPrefix = frame.args['paramPrefix'] or '$'
local limit = tonumber(frame.args['limit']) or -1
local lineSep = frame.args[1]
local sep = frame.args[2]
if not lineSep or not sep then
error('Separators were not specified')
end
local template = frame.args['call']
local expression = nil
if not template then
expression = frame.args['expr']
if not expression then
expression = frame.args[3]
end
if not expression then
error('No expression or template name was specified')
end
end
local content = p.retrieveContent(frame)
if not content then
return ''
end
return p.forLoop(frame, paramPrefix, limit, lineSep, sep, template, expression, content)
end
function p.forLoop(frame, paramPrefix, limit, lineSep, sep, template, expression, content)
local result = ''
for k, line in ipairs(mw.text.split(content, lineSep)) do
if limit >= 0 and k > limit then
break
end
local targs = mw.text.split(line, sep)
local lineResult = ''
if expression then
lineResult = p.replaceParams(expression, targs, paramPrefix)
else
lineResult = frame:expandTemplate{title = template, args = targs}
end
result = result .. lineResult
end
return result
end
function p.replaceParams(expression, args, paramPrefix)
for k, v in ipairs(args) do
expression = string.gsub(expression, paramPrefix .. k, v)
end
return expression
end
function p.retrieveContent(frame)
local page = frame.args['page']
if page then
return mw.title.new(page):getContent()
elseif frame.args['call'] or frame.args['expr'] then
return frame.args[3]
else
return frame.args[4]
end
end
return p