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