Toggle menu
Toggle personal menu
Not logged in
Your IP address will be publicly visible if you make any edits.

Module:ProcessArgs

From Mine in Abyss
Revision as of 18:59, 4 April 2020 by minecraft>Sonicwave (removed redundant check per suggestion on talk page)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)

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.

de:Modul:ParameterUmwandeln es:Módulo:ProcessArgs fr:Module:ProcessArgs it:Modulo:ProcessArgs ja:モジュール:ProcessArgs ko:모듈:ProcessArgs lzh:模組:ProcessArgs nl:Module:ProcessArgs pl:Moduł:ProcessArgs pt:Módulo:ProcessArgs ru:Модуль:ProcessArgs th:มอดูล:ProcessArgs uk:Модуль:ProcessArgs zh:模块:ProcessArgs



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