Module:Chartes
Apparence
La documentation pour ce module peut être créée à Module:Chartes/doc
--[[
Module retournant les couleurs liées à la charte indiquée
--]]
local p = {}
--[[
Retourne la couleur correspondant à la charte graphique demandée.
Les paramètres sont :
type : le type de charte demandé (dépend de l'infobox)
catégorie : primaire ou secondaire (ou tertiaire), la sous-couleur concernée
infobox : l'infobox concernée (valeur par défaut : biographie)
Si la catégorie n'est pas précisée ou erronée, primaire est retournée
Si le type n'est pas précisé ou invalide, "défaut" est retourné
Si l'infobox n'est pas précisée ou invalide, "biographie" est retournée
Les paramètres peuvent venir de l'appel au module ou de l'appel au modèle (évalué dans cet ordre).
--]]
function p.charte(frame)
local infobox = frame.args["infobox"] or frame:getParent().args["infobox"]
local categorie = frame.args["catégorie"] or frame:getParent().args["catégorie"]
local tpe = mw.ustring.lower(frame.args["type"] or frame:getParent().args["type"] or "")
local diese = frame.args["dièse"] or frame:getParent().args["dièse"]
-- validation des paramètres (valeur par défaut)
if (infobox == nil) then infobox = "biographie" end
if (categorie == nil) then categorie = "primaire" end
if (tpe == "") then tpe = "défaut" end
-- on charge le module de données
local data = require "Module:Chartes/données"
-- vérification de l'existence des données pour l'infobox
if (data[infobox] == nil) then
infobox = "biographie"
if (data[infobox] == nil) then
-- ne devrait pas se produire !
return "<span class=\"error\">Problème interne au module (infobox)</span>"
end
end
-- si ce type contient une chaîne (au lieu d'une table) c'est un "redirect", on remplace
if (type(data[infobox][tpe]) == "string") then
tpe = data[infobox][tpe]
end
-- on vérifie l'existence du type
if (data[infobox][tpe] == nil) then
tpe = "défaut"
if (data[infobox][tpe] == nil) then
return "<span class=\"error\">Problème interne au module (type)</span>"
end
end
-- on cherche le numéro d'ordre de la catégorie
local n = 1
if (categorie == "primaire" or categorie == "1" or categorie == "principale") then
n = 1
elseif (categorie == "secondaire" or categorie == "2") then
n = 2
elseif (categorie == "tertiaire" or categorie == "3") then
n = 3
-- le 3ème est optionnel
if (data[infobox][tpe][n] == nil) then
n = 1
end
end -- si pas trouvé on reste sur "1"
-- on vérifie qu'on a bien un élément
if (data[infobox][tpe][n] == nil) then
return "<span class=\"error\">Problème interne au module (élément)</span>"
end
-- on retourne la valeur
if (diese == "oui") then
return "#" .. data[infobox][tpe][n]
else
return data[infobox][tpe][n]
end
end
return p