モジュール:ProcessArgs
ナビゲーションに移動
検索に移動
Documentation
[purge]
このモジュールを使用すると、引数をマージして正規化できます。これには、引数にアクセスするためのメタテーブルを持つ空のテーブルではなく、引数を実際のテーブルにするという副作用もあります。これにより、#
演算子が機能し、反復時に無視されることなく、新しい値をテーブルに追加できるようになります。
norm
関数は、渡された引数を正規化し、空白を削除し、空の引数をnil
に設定します。テーブルが関数に渡されない場合、現在のフレームの親引数テーブルが自動的に取得されます。
merge
関数は、2つのテーブルをマージし、2番目のテーブルの重複する値を最初のテーブルの値で上書きします。また、normパラメーターの場合は norm
関数と同じことを行います。 true
です。
最初のパラメータがテーブルでない場合は、normパラメータの値として使用され、現在のフレームの直接渡された引数テーブルを自動的に取得して、現在のフレームの親引数テーブルとマージします。
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 ~= '' ) and not args[k] then
args[k] = v
end
end
return args
end
return p