Module:For nowiki/sandbox
< Module:For nowiki
Jump to navigation
Jump to search
Revision as of 21:30, 14 October 2018 by blackwiki>Pppery
Documentation for this module may be created at Module:For nowiki/sandbox/doc
local p = {}
local function doLoop(frame, values, config, offset, argstosub)
local code, sep, passto
local argnum = 1
if config.passto then
passto = config.passto
else
sep = config[argnum]
argunm = argnum + 1
end
if config.code then
code = config.code
else
code = config[argunm]
argnum = argnum + 1
end
code = mw.text.unstripNoWiki(code)
offset = offset or argnum
local result = {}
for i, value in ipairs(values) do
if i > offset then
argstosub["i"] = i - offset
argstosub["1"] = value
local actualCode = code:gsub("{{{([^{}|]*)|?[^{}]*}}}", argstosub)
table.insert(result, frame:preprocess(actualCode))
end
end
if passto then
return frame:expandTemplate{title=passto,args=result}
else
return table.concat(result, sep)
end
end
function p.main(frame)
local args = frame:getParent().args
local argstosub = {}
for key, value in pairs(args) do
if not tonumber(key) and key ~= "i" and key ~= "count" and key ~= "code" then
argstosub[key] = value
end
end
local countArg = args.count and tonumber(args.count);
if countArg then
offset = 0
values = {}
for i = 1, countArg do
values[i] = i
end
else
values = args
end
return doLoop(frame, values, args, nil, argstosub)
end
function p.template(frame)
local offset = tonumber(frame.args.offset) or 0
return doLoop(frame:getParent(), frame:getParent().args, frame.args, offset, {})
end
return p