欢迎来到奇葩栖息地!欢迎加入Discord服务器:XfrfHCzfbW欢迎加入QQ频道:r01m9y3iz6请先至特殊:参数设置验证邮箱后再进行编辑。特殊:参数设置挑选自己想要使用的小工具!不会编辑?请至这里学习Wikitext语法。

模块:ProcessArgs

来自奇葩栖息地
SkyEye FAST讨论 | 贡献2021年5月4日 (二) 11:26的版本 (建立内容为“local p = {} function p.norm( origArgs ) if type( origArgs ) ~= 'table' then origArgs = mw.getCurrentFrame():getParent().args end local args = {} for k, v…”的新页面)
(差异) ←上一版本 | 最后版本 (差异) | 下一版本→ (差异)
此模块及其文档搬运自中文Minecraft Wiki页面[[mcwzh:{{{page}}}|{{{page}}}]]。

这些内容依据CC BY-NC-SA 3.0协议引入。原贡献者请参见[{{fullurl:mcwzh:{{{page}}}|action=history}} 原页面的历史]。
经过双方编者的修改,这些内容与来源可能存在差异。
From interwiki:sync参数无效

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