Module:Foreach
Appearance
Documentation for this module may be created at Module:Foreach/doc
local p = {}
function p.o(frame)
local args = frame.args
local p_args = frame:getParent().args
local output = ''
local r = args.r
local value = r:match("^.'\"`UNIQ--") and mw.text.unstrip(r) or r
if value == nil then return "" end
-- nowikiの囲みがあれば削除
if value:match("<nowiki>") then output = output .. '[no]' end
value = value:gsub("^<nowiki>(.-)</nowiki>$", "%1")
-- 引数の繰り返し変数を置換
for arg_name, arg_v in pairs(p_args) do
if tonumber(arg_name) ~= nil then
output = output .. value:gsub("($.-X)", function(match)
local tmp_name = match:sub(2, -2) -- 先頭の$、末尾のXを削除
if #tmp_name == 0 then return arg_v end
if p_args[tmp_name] == nil then return "" end
return p_args[tmp_name]
end)
end
end
return mw.text.unstrip(output)
end
return p