Module:Liste éléments
Apparence
La documentation pour ce module peut être créée à Module:Liste éléments/doc
-- module ayant pour rôle de remplacer le code « lourd » de {{m|Liste éléments}}
local p = {}
-- retourne le texte après avoir supprimer les espaces, retour ligne... en début et fin de texte.
-- si texte == nil, la fonction retourne nil.
-- Si le texte est vide ou composé uniquement d'espces, la fonction retourne un texte vide ''.
function p.trim (texte)
return texte and string.match (texte, '^%s*(.-)%s*$')
end
-- fonction principale
function p.liste(frame)
-- on récupère les paramètres
local args = frame:getParent().args
local nbsp = nil -- nombre d'espaces de séparation
-- note : les paramètres sont testés en provenance du modèle (frame.args) et si absent
-- en provenance de l'appel au modèle. Permet facilement une surcharge du
-- comportement depuis les modèles.
local sep = frame.args["séparateur"] or frame.args["sép"]
if (sep == nil) then
sep = args["séparateur"] or args["sép"]
end
-- cas spéciaux (de m....)
if (sep == "2•" or sep == "•2") then
sep = "•"
nbsp = 2
elseif (sep == "2·" or sep == "·2") then
sep = "·"
nbsp = 2
-- on ne peut pas gérer en Lua pour le moment la réception de {{espace}} qui
-- contient "<nowiki> </nowiki>" car c'est encodé avant d'arriver
elseif (sep == " " or sep == " " or sep == "espace") then
nbsp = 0
sep = " "
end
-- caractère séparateur par défaut
if (sep == nil) then
sep = "·"
end
-- nombre d'espaces autour du séparateur (sauf si cas spécial)
if (nbsp == nil) then
nbsp = frame.args["espaces"] or args["espaces"]
end
-- valeur par défaut
if (nbsp == nil) then
nbsp = 1
end
-- on vérifie que c'est un nombre, et qu'il est valide
nbsp = tonumber(nbsp)
if (nbsp == nil) then
-- on ignore et on met la valeur par défaut
nbsp = 1
end
if (nbsp < 0) then
nbsp = 0
end
-- on parcours les paramètres nom nommés dans l'ordre (dans args) pour construire le résultat
local i = 1
local res = ""
local sept = mw.ustring.rep(" ", nbsp) .. sep .. mw.ustring.rep(" ", nbsp)
while (args[i]) do
if (i > 1) then -- séparateur avant, sauf le premier
res = res .. sept
end
res = res .. '<span class="nowrap">' .. p.trim(args[i]) .. '</span>'
i = i + 1
end
return res
end
-- retour du module
return p