- 致编者:请牢记我们的域名wiki.mcbe-dev.net!
- 致编者:欢迎加入本Wiki的官方交流QQ群或Discord服务器!
- 基岩版1.19.31现已发布!(了解更多)
- Inner Core现已支持Xbox模组联机!(了解更多)
- 如果您是第一次来到本Wiki,欢迎注册一个账户
- 点击顶部的“编辑”或“编辑源代码”按钮即可编辑当前页面
- 请知悉:在不登录时也可以编辑和新建页面,但是您当前的IP地址会记录在编辑历史中
Module:ProcessArgs
This module allows arguments to be merged and normalised. This also has the side-effect of making the arguments a real table instead of an empty table with a metatable to access the args. This allows the #
operator to work, as well as allowing new values to be added to the table, without being ignored when iterating.
The norm
function will normalise the arguments passed to it, trimming whitespace and setting empty arguments to nil
. If a table isn't passed to the function, it will automatically get the current frame's parent arguments table.
The merge
function will merge two tables together, overwriting duplicate values from the first table with the second table's value, as well as doing the same as the norm
function if the norm parameter is true
.
If the first parameter isn't a table, it is used as the value for the norm parameter, and it will automatically get the current frame's directly passed arguments table and merge it with the current frame's parent arguments table.
local p = {}
function p.norm( origArgs )
if type( origArgs ) ~= 'table' then
origArgs = mw.getCurrentFrame():getParent().args
end
local args = {}
for k, v in pairs( origArgs ) do
v = mw.text.trim( tostring( v ) )
if v ~= '' then
args[k] = v
end
end
return args
end
function p.merge( origArgs, parentArgs, norm )
if type( origArgs ) ~= 'table' then
norm = origArgs
local f = mw.getCurrentFrame()
origArgs = f.args
parentArgs = f:getParent().args
end
local args = {}
for k, v in pairs( origArgs ) do
v = mw.text.trim( tostring( v ) )
if not norm or norm and v ~= '' then
args[k] = v
end
end
for k, v in pairs( parentArgs ) do
v = mw.text.trim( v )
if not norm or norm and v ~= '' then
args[k] = v
end
end
return args
end
return p