Minecraft Wiki
登録
Advertisement

このモジュールは、引数をマージして正規化することができます。これには、引数にアクセスするためのメタテーブルを持つ空のテーブルではなく、引数を実際のテーブルにするという副作用があります。これにより、# 演算子が機能し、反復処理をするときに無視されることなく、新しい値をテーブルに追加することができます。

norm 関数は、渡された引数を正規化し、空白を削除し、空の引数を nil に設定します。テーブルが関数に渡されない場合、現在のフレームの親引数テーブルが自動的に取得されます。

merge 関数は、2つのテーブルをマージし、1番目のテーブルの重複値を2番目のテーブルの値で上書きします。また、norm パラメータが true の場合、norm 関数と同様に2つのテーブルをマージします。 最初のパラメータがテーブルでない場合、norm パラメータの値として使用され、現在のフレームの直接渡された引数テーブルを自動的に取得し、現在のフレームの親引数テーブルとマージします。

[閲覧 | 編集 | 履歴 | キャッシュ破棄]上記の解説は、モジュール:ProcessArgs/docから参照されています。
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 v ~= '' then
			args[k] = v
		end
	end
	
	for k, v in pairs( parentArgs ) do
		v = mw.text.trim( v )
		if not norm or v ~= '' then
			args[k] = v
		end
	end
	
	return args
end
return p
Advertisement