Module:Liste éléments (Hexasoft 2013)

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

Utilisation

modifier

Fonctions exportables :

  • p.liste(frame) – cette fonction affiche la liste de ses paramètres, dans l'ordre, séparés par un "⋅". Les paramètres sont déclarés insécables.
    • option "espaces=N" : permet d'indiquer combien d'espaces doivent être insérés autour du "⋅". Valeur par défaut 1.
    • option "séparateur=texte" (ou "sép=texte") : permet de remplacer le séparateur par défaut "⋅" par le texte indiqué. Notez les valeurs spéciales suivantes :
      • "2⋅" ou "⋅2" : fixe le séparateur à "⋅" et le nombre d'espaces à 2.
      • "2•" ou "•2" : fixe le séparateur à "•" et le nombre d'espaces à 2.
      • "espace" ou "" (vide) : fixe le séparateur à l'espace et le nombre d'espaces à 0.

Exemples

  • {{Utilisateur:Hexasoft/Modèle:Liste éléments | Riri | Fifi | Loulou}}
→   Riri · Fifi · Loulou
  • {{Utilisateur:Hexasoft/Modèle:Liste éléments | séparateur = * | espaces = 2 | Riri | Fifi | Loulou}}
→   Riri  *  Fifi  *  Loulou
  • {{Utilisateur:Hexasoft/Modèle:Liste éléments | sép = 2• | Riri | Fifi | Loulou}}
→   Riri  •  Fifi  •  Loulou
  • {{Utilisateur:Hexasoft/Modèle:Liste éléments | sép = espace | Riri | Fifi | Loulou}}
→   Riri Fifi Loulou

Note : utilisation de "espace" au lieu de {{espace}}, Lua ne gérant pas les tags tels que nowiki dans les paramètres reçus (enfin, si, mais on ne peut pas les tester correctement actuellement)

-- 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'espaces, 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 == "&nbsp;" 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;", nbsp) .. sep .. mw.ustring.rep("&nbsp;", 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