Module:ProcessArgs

De ARK Wiki
Aller à la navigation Aller à la recherche
Template-info.png Documentation

Ce module permet de fusionner et normaliser les arguments. Il permet en outre de faire des arguments une vraie table plutôt qu'une table vide avec une métatable qui permet d'accéder aux arguments (args). Cela permet à l'opérateur # de fonctionner comme permettre l'ajout de nouvelles valeurs à la table sans les ignorer quand on la répète.

La fonction norm normalise les arguments en supprimant les espaces et en remplaçant les arguments vides par nil. Si une table n'utilise pas cette fonction, elle cherchera automatiquement les arguments du tableau parent.

La fonction merge fusionne deux tables, efface les doublons de la seconde table en utilisant les valeurs de la première, fonctionnant comme si le paramètre de la fonction norm si le paramètre de la norme est true. Si le premier paramètre n'est pas une table, il est utilisé comme valeur par le paramètre norm, et il ira chercher automatiquement le tableau directement avec les arguments de la table puis sera fusionné avec le format du tableau des arguments parents en cours.


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