Difference between revisions of "Module:Voir"
Mediawiki>Lepticed7 m (Modifications proposées par User:Darmo117.) |
m (1 revision imported) |
(No difference)
|
Latest revision as of 15:09, 7 August 2020
Documentation for this module may be created at Module:Voir/doc
-- Avant de publier toute modification, testez l’affichage dans [[Discussion module:voir]] local b = require('Module:bases') local p = {} --- Formate les arguments 2 par 2 : les valeurs aux indices impairs correspondent --- aux description des valeurs aux indices pairs. --- @param raw_args table La liste des valeurs par paires. --- @return table La liste des valeurs formatées "valeur (description)". local function _format_descriptions(raw_args) local i = 1 local values = {} while raw_args[i] ~= nil do table.insert(values, raw_args[i + 1] .. " (" .. raw_args[i] .. ")") i = i + 2 end return values end --- Transforme une table ou une metatable en une table d’éléments acceptables. --- @param raw_table table Table des paramètres bruts. --- @param title string Titre de la page courante. --- @return table La liste des valeurs et de leur description entre parenthèses. local function _to_table(raw_table, title) local i = 1 local max_links = 200 local params_table = {} while raw_table[i] ~= nil and i <= max_links do local item = mw.text.trim(raw_table[i]) -- Pour traiter [[page (explication)]] local description = (mw.ustring.match(item, " %(([^%(%)%|]*)%)$")) or "" if description ~= "" then description = " ''(" .. description .. ")''" 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 link = mw.ustring.gsub(item, "|.*", "") if link ~= '' and link ~= title then table.insert(params_table, "'''[[" .. item .. "]]'''" .. description) end i = i + 1 end return params_table end --- Construit le texte à afficher. --- @param list table Liste des valeurs à afficher. --- @return string Le texte à afficher. local function _build_list_text(list) local text = '' -- La liste contient-elle des éléments à afficher ? Sinon on affiche un message indiquant ce qu'il faut faire. if #list > 0 then -- Liste de liens wiki, en gras, séparés par des virgules text = table.concat(list, ", ") else text = "(Merci de rajouter les articles en paramètres, ou à défaut d’enlever ce modèle)" text = text .. b.fait_categorie_contenu('Modèle voir sans paramètre valide') end return text end --- Récupère le titre de la page et les valeurs données et retourne le texte. --- @param values table Les valeurs brutes. --- @return string Le texte à afficher. local function _make_text(values) local title = mw.title.getCurrentTitle().fullText local args = _to_table(values, title) return _build_list_text(args) end --- Récupère les paramètres du modèle et renvoie la liste formatée en texte brut. function p.liste_voir(frame) return _make_text(frame:getParent().args) end --- Construit la liste des valeurs pour le modèle {{voir autre alphabet}}. function p.liste_voir_alphabet(frame) return _make_text(_format_descriptions(frame:getParent().args)) end return p