« Module:Outils » : différence entre les versions

De Le Wiki de Lug
Aller à la navigation Aller à la recherche
Modèle>Od1n
m (uniformisation avec le reste du module)
m (57 revisions imported)
 
(10 versions intermédiaires par un autre utilisateur non affichées)
Ligne 4 : Ligne 4 :
--[[
--[[
trim nettoie un paramètre non nommé (supprime les espaces et retours ligne au début et à la fin)
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  
retourne nil si le texte est vide ou n'est pas du texte. Les nombres ne sont PAS considérés
comme du texte.
comme du texte.
]]
]]
function Outils.trim( texte )
function Outils.trim( texte )
if type( texte ) == 'string' and texte~= '' then
if type( texte ) == 'string' and texte ~= '' then
texte = texte:gsub( '^%s*(%S?.-)%s*$', '%1' )
texte = texte:gsub( '^%s*(%S?.-)%s*$', '%1' )
if texte ~= '' then
if texte ~= '' then
Ligne 15 : Ligne 15 :
end
end
return nil
return nil
end
-- erreur génère un message d'erreur
function Outils.erreur( texte )
local message = Outils.trim( texte ) or "''erreur : raison non précisée''"
return '<span class="error">' .. message .. "</span>"
end
end


Ligne 27 : Ligne 20 :
--[[
--[[
validTextArg renvoit le premier paramètre chaine non vide
validTextArg renvoit le premier paramètre chaine non vide
Paramètre :  
Paramètre :
1 - tableau contenant tous paramètres
1 - tableau contenant tous paramètres
2, ... - les noms des paramètres qui doivent êtres testés.
2, ... - les noms des paramètres qui doivent êtres testés.
]]
]]
function Outils.validTextArg( args, name, ... )  
function Outils.validTextArg( args, name, ... )
local texte = Outils.trim( args[name] )
local texte = Outils.trim( args[name] )
if texte then
if texte then
Ligne 44 : Ligne 37 :


--[[
--[[
notEmpty renvoie le premier paramètre non vide ou nul.  
notEmpty renvoie le premier paramètre non vide ou nul.
Paramètre :  
Paramètre :
1, ... - les variables qui doivent êtres testés.
1, ... - les variables qui doivent êtres testés.
]]
]]
Ligne 55 : Ligne 48 :


local tvar = type( var )
local tvar = type( var )
 
if tvar == 'table' then
if tvar == 'table' then
local nextFunc = pairs( var )  -- n'utilise pas next car non défini par mw.loadData
local nextFunc = pairs( var )  -- n'utilise pas next car non défini par mw.loadData
if nextFunc( var ) ~= nil then
if nextFunc( var ) ~= nil then
return var
return var
end  
end
elseif var == true or ( tvar == 'number' and var ~= 0 ) or tvar == 'function' then
elseif var == true or ( tvar == 'number' and var ~= 0 ) or tvar == 'function' then
return var
return var
end
end
 
if select( '#', ... ) > 0 then
if select( '#', ... ) > 0 then
return Outils.notEmpty( ... )
return Outils.notEmpty( ... )
end
end
end
end
Ligne 72 : Ligne 65 :


--[[
--[[
extractArgs permet de récupérer les arguements du modèle,  
extractArgs permet de récupérer les arguments du modèle,
ou la table transmise à la fonction par une autre fonction d'un module
ou la table transmise à la fonction par une autre fonction d'un module
Paramètres :  
Paramètre :
1 - un objet frame ou une table contenant les paramètre
1 - un objet frame ou une table contenant les paramètres
2, ...  - une liste de nom de paramètre pour déterminé si les paramètres sont transmis
par #invoke. Le premier paramètre de frame sera systématiquement testé.
]]
]]
function Outils.extractArgs ( frame, ... )
function Outils.extractArgs ( frame )
if type( frame ) == 'table' then
if type( frame.getParent ) == 'function' then
if type( frame.getParent ) == 'function' then
local args = frame:getParent().args
if Outils.notEmpty( frame.args.invokeArgsOnly ) then
for k,v in pairs( frame.args ) do
return frame.args
args[k] = v;
else
local args = frame:getParent().args;
for k,v in pairs( frame.args ) do
args[k] = v;
end
return args
end
else
return frame
end
end
return args
else
else
return { frame, ... }
return frame
end
end
end
--[[
abr génère une abréviation (discrète par défaut)
paramètres :
1 = abréviation,
2 = texte,
3 = langue,
nbsp =  '-' pour une espace insécable avant l'abréviation, '+' pour l'avoir après.
visible = true pour une abréviation non discrète
]]
function Outils.abr( frame, ... )
local args = Outils.extractArgs( frame, ... )
if args[2] == nil then
return args[1] or ''
-- retoune l'abréviation ou au minimum une chaine vide s'il n'y a pas de texte
end
local wikiText = { '<abbr' }
if not args.visible then
table.insert( wikiText, ' class="abbr"' )
end
table.insert( wikiText, ' title="' .. args[2] .. '"' )
if args[3] then
table.insert( wikiText, ' lang="' .. args[3] .. '"' )
end
table.insert( wikiText, '>' .. args[1] .. '</abbr>' )
if args.nbsp == '-' then
table.insert( wikiText, 1, '&nbsp;' )
elseif args.nbsp == '+' then
table.insert( wikiText, '&nbsp;' )
end
return table.concat( wikiText )
end
end




return Outils
return Outils

Version actuelle datée du 9 avril 2021 à 11:52

La documentation pour ce module peut être créée à Module:Outils/doc

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
		texte = texte:gsub( '^%s*(%S?.-)%s*$', '%1' )
		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