Module:voir

Définition, traduction, prononciation, anagramme et synonyme sur le dictionnaire libre Wiktionnaire.
Sauter à la navigation Sauter à la recherche
Ce module réunit des fonctions pour afficher le modèle {{voir}} (version Lua actuelle : {{voir2}}).

Fonctions :

liste_voir(frame) 
utilisable indirectement dans un modèle voir. Crée une liste formatée à partir de la liste d'éléments donnés au modèle. Le bandeau n'est pas inclus.

info Documentation du Module:voir : v · d · m · h.


-- Avant de publier toute modification, testez l’affichage dans [[Discussion module:voir]]

b = require('Module:bases')
local p = {}

-- Transforme une table ou une metatable en une table d’éléments acceptables
function _to_table(metatable)
    local titre = mw.title.getCurrentTitle().fullText  -- Pour vérifier le nom de l’article
    local i = 1                                 -- itérateur, nécessaire car on ne peut pas connaitre la taille de la metatable
    local max_liens = 200                       -- Limite du nombre de mots à afficher (et de la boucle while, surtout)
    local table_liste = {}                      -- Nouvelle table « normale »

    -- Extrait tous les numéros et les place dans une table
    while (metatable[i] ~= nil and i <= max_liens) do
        -- Nettoyage des espaces superflues
        local item = mw.text.trim(metatable[i])

        -- pour traiter [[page (explication)]]
        local exp = (mw.ustring.match(item, " %(([^%(%)%|]*)%)$")) or ""
        if exp ~= "" then
            exp = " ''(" .. exp .. ")''"
            item = mw.ustring.gsub(item, " %([^%(%)%|]*%)$", "")
        end

        -- Caractères spéciaux non représentables avec une page : à écrire comme Lien{{!}}Caractère
        -- (Bricolage : pas possible de faire mieux ?)
        local lien = mw.ustring.gsub(item, "|.*", "")

        -- Exclusion des vides et du titre de la page
        if (lien ~= '' and lien ~= titre) then
            table.insert(table_liste, "'''[[" .. item .. "]]'''" .. exp)
        end
        i = i + 1
    end

    return table_liste
end

--------------------------------------------------------------------------------------------------------
-- VOIR

function _fait_liste_voir(liste)
    local texte_liste = ''
    
    -- La liste contient-elle des éléments à afficher ? Sinon on affiche un message indiquant ce qu'il faut faire.
    if (#liste > 0) then 
        -- Liste de liens wiki, en gras, séparés par des virgules
        texte_liste = table.concat(liste, ", ")
    else
        texte_liste = "(Merci de rajouter les articles en paramètres, ou à défaut d’enlever ce modèle)"
        texte_liste = texte_liste .. b.fait_categorie_contenu('Modèle voir sans paramètre valide')
    end
    return texte_liste
end

-- Pour un modèle. Récupère les paramètres du modèle et renvoie la liste formatée, mais sans bandeau.
function p.liste_voir(frame)
    local liste = _to_table(frame:getParent().args) -- Transforme la metatable des paramètres en table exploitable
    local texte_liste = _fait_liste_voir(liste)
    return texte_liste
end

return p