Difference between revisions of "Module:For nowiki"
Jump to navigation
Jump to search
blackwiki>Petr Matas |
blackwiki>Pppery (Enhance code to be able to pass values to the code in the for loop) |
||
| Line 8: | Line 8: | ||
local result = "" | local result = "" | ||
| + | local argstosub = {} | ||
| + | for key, value in pairs(args) do | ||
| + | if not tonumber(key) and key ~= "i" then | ||
| + | argstosub[key] = value | ||
| + | end | ||
| + | end | ||
| + | |||
for i, value in ipairs(args) do | for i, value in ipairs(args) do | ||
if i > offset + 1 then | if i > offset + 1 then | ||
result = result .. sep | result = result .. sep | ||
end | end | ||
| − | |||
if i > offset then | if i > offset then | ||
| − | local actualCode = code:gsub("{{{([^{}]*)}}}", | + | argstosub["i"] = i - offset |
| + | argstosub["1"] = value | ||
| + | local actualCode = code:gsub("{{{([^{}|]*)|?[^{}]*}}}", argstosub) | ||
result = result .. frame:preprocess(actualCode) | result = result .. frame:preprocess(actualCode) | ||
end | end | ||
Revision as of 18:36, 21 June 2017
Implements {{For nowiki}}.
local p = {}
function p.main(frame)
local args = frame:getParent().args
local sep = args[1]
local code = mw.text.unstripNoWiki(args.code or args[2])
local offset = args.code and 1 or 2
local result = ""
local argstosub = {}
for key, value in pairs(args) do
if not tonumber(key) and key ~= "i" then
argstosub[key] = value
end
end
for i, value in ipairs(args) do
if i > offset + 1 then
result = result .. sep
end
if i > offset then
argstosub["i"] = i - offset
argstosub["1"] = value
local actualCode = code:gsub("{{{([^{}|]*)|?[^{}]*}}}", argstosub)
result = result .. frame:preprocess(actualCode)
end
end
return result
end
return p