模組:Forward parameters to template call
外观
![文档图示](http://upload.wikimedia.org/wikipedia/commons/thumb/4/43/Test_Template_Info-Icon_-_Version_%282%29.svg/50px-Test_Template_Info-Icon_-_Version_%282%29.svg.png)
您可能想要创建本Scribunto模块的文档。 编者可以在本模块的沙盒 (创建 | 镜像)和测试样例 (创建)页面进行实验。 请在/doc子页面中添加分类。本模块的子页面。 |
local p = {}
local getArgs = require('Module:Arguments').getArgs
local sparseIpairs = require('Module:TableTools').sparseIpairs
function p.main(frame)
local args = getArgs(frame)
return p._main(args)
end
function convert(args)
local filter = {}
local newParams = {}
for arg, val in pairs(args) do
if arg == tostring(arg) then
if arg:match("^_convert_prefix") then
filter[val] = {}
else
if arg:match("^_forward_name") then
newParams[val] = args[val]
end end end end
for arg, val in pairs(args) do
if arg == tonumber(arg) then
newParams[#newParams + 1] = val
else
for prefix, _ in pairs(filter) do
if arg:match("^" .. prefix) then
if arg == prefix then
filter[prefix][0] = val
else
local prefixnum = arg:match("^" .. prefix .. "(%d)")
if prefixnum then
filter[prefix][tonumber(prefixnum)] = val
end end end end end end
for _, values in pairs(filter) do
for _, val in sparseIpairs(values) do
newParams[#newParams + 1] = val
end end
return newParams
end
function p._main(args)
local markup = "{{" .. args._template
local convertedArgs = convert(args)
for i, val in ipairs(convertedArgs) do
markup = markup .. "|" .. i .. "=" .. val
end
for param, val in pairs(convertedArgs) do
if param == tostring(param) and not param:match("^_") then
markup = markup .. "|" .. param .. "=" .. val
end end
return markup .. "}}"
end
return p