跳转到内容

Module:ProcessArgs

此模块及其文档搬运自中文Minecraft Wiki页面Module:ProcessArgs

引入时,来源页面的修订版本为531350,其文档页的修订版本为771774
这些内容依据CC BY-NC-SA 3.0协议引入。原贡献者请参见原页面的历史
经过双方编者的修改,这些内容与来源可能存在差异。
这些内容需要定期更新,以与来源保持同步。

该模块将参数添加到一个表中以便模块使用。

用法

该模块通常只能在其他模块中调用,否则会出错。

norm函数

require('Module:ProcessArgs').norm(origArgs)
  • origArgs:可选(表),用于指定args表,默认值为父框架[注 1]args表。值为其他类型(包括nil)时取默认值。

该函数会将origArgs表中所有值的多余空字符删去(若表中某个值全部由空字符组成,则将其设置为nil),并返回修改后的表。

merge函数

require('Module:ProcessArgs').merge(origArgs,parentArgs,norm)
  • origArgs:可选(表),用于指定args表,默认值为当前框架[注 2]args表。值为其他类型(包括nil)时先用该值覆盖norm的值,然后取默认值。
  • parentArgs:可选(表),用于指定args表,当origArgs不是表时默认值为父框架[注 1]args表。值为其他类型(包括nil)时会出错。
  • norm:可选(布尔值),用于指定是否将表中全部由空字符组成的值设置为nil。当origArgs不是表时取origArgs的值。

该函数会将origArgsparentArgs这两个表合并(若两个表有相同的键,则优先取parentArgs中的值),同时将表中所有值的多余空字符删去,并返回合并后的表。

  1. 1.0 1.1 通常为{{#invoke:}}所在页面的框架。
  2. 通常为{{#invoke:}}创建的框架。

示例

假设模块:Example包含以下代码:

local p = {}
function p.args(f)
	local arg1 = require('Module:ProcessArgs').norm()
	local arg2 = require('Module:ProcessArgs').norm(f.args)
	local arg3 = require('Module:ProcessArgs').merge(true)
	return mw.allToString(arg1[1],arg2[2],arg2['args'],arg3.name)
end
return p

Template:Example包含以下代码:

{{#invoke:Example|args|foo|  bar  |ba z|name= na  me }}

页面Example包含以下代码:

{{Example|  a  rg1    |2=arg2|args=abc }}

那么页面Example将会显示:

a  rg1 bar nil na me

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
Cookie帮助我们提供我们的服务。通过使用我们的服务,您同意我们使用cookie。