Module:Chartes : Différence entre versions

De Lagny-sur-Marne Wiki
Aller à : navigation, rechercher
Ligne 39 : Ligne 39 :
 
     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
 
-- on vérifie l'existence du type
 
if (data[infobox][tpe] == nil) then
 
if (data[infobox][tpe] == nil) then

Version du 28 octobre 2013 à 08:49

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 = frame.args["type"] or frame:getParent().args["type"]
	
	-- validation des paramètres (valeur par défaut)
	if (infobox == nil) then infobox = "biographie" end
	if (categorie == nil) then categorie = "primaire" end
	if (tpe == nil) 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
	return data[infobox][tpe][n]
end

return p