For faster navigation, this Iframe is preloading the Wikiwand page for Module:Outils.

Module:Outils

 Documentation[voir] [modifier] [historique] [purger]

Ce module contient différentes fonctions pratiques.

Résumé des fonctions

Fonctions exportables :

  • trim( texte ) – similaire à mw.text.trim mais retourne nil lorsque la chaine est vide ou lorsque le paramètre n'est pas une chaine (ne génère pas d'erreur).
  • extractArgs( frame ) – retourne une table avec les paramètres, à partir d'un objet frame ou d'une table.
  • validTextArg( args, name, ... ) – retourne le premier paramètre chaine non vide à partir de la table des paramètres et d'une liste de noms de paramètres.
  • notEmpty( var, ... ) – retourne le premier élément non vide.

Détail par fonction

extractArgs

Syntaxe

Outils.extractArgs( frame )

  • Si frame est une table simple et non un objet Frame, retourne frame
  • Si frame est un objet créé par #invoke:, retourne les paramètres passés à #invoke: (en priorité) et ceux passés au modèle.

Attention : cette fonction peut modifier la table frame.getParent().args. S'il est probable qu'un autre module passe un objet frame à votre fonction, il est préférable de l'indiquer dans la documentation.

Exemple
function p.maFonction( frame )
    local args = Outils.extractArgs( frame )
    return ( args[1] or 'nil' ) .. ' ' .. ( args[2] or 'nil' ) .. ' ' .. ( args['nom'] or 'nil' )
end
  • appel par table : p.maFonction{ 'oui', 'deux', nom = 'Zebulon84' } → « oui deux Zebulon84 »
  • appel par #invoke: : ((#invoke:p |maFonction |oui |2 |nom = Zebulon84)) → « oui deux Zebulon84 »
  • appel par modèle ((Ma fonction)) :
    • le modèle contient ((#invoke:p |maFonction)),
      • ((Ma fonction|oui | deux |nom= Zebulon84)) → « oui deux Zebulon84 »
    • le modèle contient ((#invoke:p |maFonction |nom = Zebulon84))
      • ((Ma fonction |oui | deux )) → « oui deux Zebulon84 »
      • ((Ma fonction |oui | deux |nom = Hexasoft)) → « oui deux Zebulon84 »
    • le modèle contient ((#invoke:p |maFonction |nom = (({nom|Zebulon84))} ))
      • ((Ma fonction |oui | deux )) → « oui deux Zebulon84 »
      • ((Ma fonction |oui | deux |nom = Hexasoft)) → « oui deux Hexasoft »
      • ((Ma fonction |oui | deux |nom = )) → « oui deux nil »

validTextArg

Syntaxe

Outils.validTextArg( args, name, ... )

Retourne args.name si c'est un texte valide. Sinon teste les autres éléments transmis à la fonction. S'il n'y en a pas ou s'ils ne correspondent pas à un texte valide dans la table args, retourne nil

Cette fonction est pratique pour obtenir le contenu d'un paramètre pouvant avoir plusieurs noms.

Attention : les nombres (type 'number') ne sont pas considérés comme un texte valide.

exemple
local args = { '1', '2', 3, nom1 = nil, nom2 = '', nom3 = 'a' }
local v1  = Outils.validTextArg( args, 'nom1' }                -- v1 = nil
local v2 = Outils.validTextArg( args, 'nom1', 'nom2', 'nom3' ) -- v2 = 'a'
local v3 = Outils.validTextArg( args, 3, 2, 1 )                -- v3 = '2'

local function validArg( ... ) 
    return Outils.validTextArg( args, ... }
end

local v4 = validArg( 'nom' )  -- v4 = nil
local v5 = validArg( 'nom2', 'nom3' ) -- v5 = 'a'

notEmpty

Outils.notEmpty( var, ... )

Retourne le premier élément non vide, sinon retourne nil.

  • Sont considérés comme vide : nil, false, '', ' \t \n ', 0, { }
  • Sont considérés comme non vide : true, 'blabla', ' ', 1, { '' }, { {} }, function () end

Voir les statistiques d'utilisation du module sur l'outil wstat.

local Outils = { }


--[[
	trim nettoie un paramètre non nommé (supprime les espaces et retours ligne au début et à la fin)
	retourne nil si le texte est vide ou n'est pas du texte. Les nombres ne sont PAS considérés
	comme du texte.
]]
function Outils.trim( texte )
	if type( texte ) == 'string' and texte ~= '' then
		-- http://lua-users.org/wiki/StringTrim
		texte = texte:match( '^()%s*$' ) and '' or texte:match( '^%s*(.*%S)' )
		if texte ~= '' then
			return texte
		end
	end
	return nil
end


--[[
	validTextArg renvoit le premier paramètre chaine non vide
	Paramètre :
		1 - tableau contenant tous paramètres
		2, ... - les noms des paramètres qui doivent êtres testés.
]]
function Outils.validTextArg( args, name, ... )
	local texte = Outils.trim( args[name] )
	if texte then
		return texte
	end
	if select( '#', ... ) > 0 then
		return Outils.validTextArg( args, ... )
	end
	return nil
end


--[[
	notEmpty renvoie le premier paramètre non vide ou nul.
	Paramètre :
		1, ... - les variables qui doivent êtres testés.
]]
function Outils.notEmpty( var, ... )
	local texte = Outils.trim( var )
	if texte then
		return texte
	end

	local tvar = type( var )

	if tvar == 'table' then
		local nextFunc = pairs( var )   -- n'utilise pas next car non défini par mw.loadData
		if nextFunc( var ) ~= nil then
			return var
		end
	elseif var == true or ( tvar == 'number' and var ~= 0 ) or tvar == 'function' then
		return var
	end

	if select( '#', ... ) > 0 then
		return Outils.notEmpty( ... )
	end
end


--[[
	extractArgs permet de récupérer les arguments du modèle,
	ou la table transmise à la fonction par une autre fonction d'un module
	Paramètre :
		1 - un objet frame ou une table contenant les paramètres
]]
function Outils.extractArgs ( frame )
	if type( frame.getParent ) == 'function' then
		local args = frame:getParent().args
		for k,v in pairs( frame.args ) do
			args[k] = v;
		end
		return args
	else
		return frame
	end
end


return Outils
{{bottomLinkPreText}} {{bottomLinkText}}
Module:Outils
Listen to this article

This browser is not supported by Wikiwand :(
Wikiwand requires a browser with modern capabilities in order to provide you with the best reading experience.
Please download and use one of the following browsers:

This article was just edited, click to reload
This article has been deleted on Wikipedia (Why?)

Back to homepage

Please click Add in the dialog above
Please click Allow in the top-left corner,
then click Install Now in the dialog
Please click Open in the download dialog,
then click Install
Please click the "Downloads" icon in the Safari toolbar, open the first download in the list,
then click Install
{{::$root.activation.text}}

Install Wikiwand

Install on Chrome Install on Firefox
Don't forget to rate us

Tell your friends about Wikiwand!

Gmail Facebook Twitter Link

Enjoying Wikiwand?

Tell your friends and spread the love:
Share on Gmail Share on Facebook Share on Twitter Share on Buffer

Our magic isn't perfect

You can help our automatic cover photo selection by reporting an unsuitable photo.

This photo is visually disturbing This photo is not a good choice

Thank you for helping!


Your input will affect cover photo selection, along with input from other users.