Module:Chartes : Différence entre versions

De Lagny-sur-Marne Wiki
Aller à : navigation, rechercher
(les données étaient bien évaluées une seule fois, en revanche ainsi dataWrapper() est aussi exécuté une seule fois)
(pour le paramètre 'diese', ajout de 'true' (en plus de 'oui'), plus logique lorsqu'appelé depuis un module)
 
(2 révisions intermédiaires par 2 utilisateurs non affichées)
Ligne 9 : Ligne 9 :
  
 
--[[
 
--[[
   Retourne la couleur correspondant à la charte graphique demandée.
+
   Fonction traitant réellement la demande (voir les paramètres ci-dessous)
  Les paramètres sont :
+
   Permet d'être appelé directement depuis un autre module, sans passer par
    type : le type de charte demandé (dépend de l'infobox)
+
    un appel de modèle/module en wikicode
    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)
+
function p.charte_m(infobox, categorie, tpe, diese)
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)
 
-- validation des paramètres (valeur par défaut)
 
if (infobox == nil) then infobox = "biographie" end
 
if (infobox == nil) then infobox = "biographie" end
 
if (categorie == nil) then categorie = "primaire" end
 
if (categorie == nil) then categorie = "primaire" end
if (tpe == "") then tpe = "défaut" end
+
if ((tpe == nil) or (tpe == "")) then tpe = "défaut" end
 
 
-- interruption si le chargement du module de données a échoué
 
-- interruption si le chargement du module de données a échoué
 
if (not success) then
 
if (not success) then
Ligne 43 : Ligne 30 :
 
return "<span class=\"error\">Problème interne au module (infobox)</span>"
 
return "<span class=\"error\">Problème interne au module (infobox)</span>"
 
end
 
end
    end
+
end
  
 
-- si ce type contient une chaîne (au lieu d'une table) c'est un "redirect", on remplace
 
-- si ce type contient une chaîne (au lieu d'une table) c'est un "redirect", on remplace
Ligne 77 : Ligne 64 :
 
 
 
-- on retourne la valeur
 
-- on retourne la valeur
if (diese == "oui") then
+
if ((diese == "oui") or (diese == true)) then
 
return "#" .. data[infobox][tpe][n]
 
return "#" .. data[infobox][tpe][n]
 
else
 
else
      return data[infobox][tpe][n]
+
return data[infobox][tpe][n]
  end
+
end
 +
end
 +
 
 +
--[[
 +
  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).
 +
 
 +
  Note : wrapper récupérant les paramètres et appelant la « vraie » fonction
 +
--]]
 +
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"]
 +
 +
return p.charte_m(infobox, categorie, tpe, diese)
 
end
 
end
  
 
return p
 
return p

Version actuelle datée du 5 janvier 2017 à 18:36

La documentation pour ce module peut être créée à Module:Chartes/doc

--[[
  Module retournant les couleurs liées à la charte indiquée
--]]

local p = {}

-- on charge le module de données
local success, data = pcall(mw.loadData, "Module:Chartes/données")

--[[
  Fonction traitant réellement la demande (voir les paramètres ci-dessous)
  Permet d'être appelé directement depuis un autre module, sans passer par
    un appel de modèle/module en wikicode
--]]
function p.charte_m(infobox, categorie, tpe, diese)
	-- 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) or (tpe == "")) then tpe = "défaut" end
	-- interruption si le chargement du module de données a échoué
	if (not success) then
		return "<span class=\"error\">Problème interne au module (données)</span>"
	end
	
	-- 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") or (diese == true)) then
		return "#" .. data[infobox][tpe][n]
	else
		return data[infobox][tpe][n]
	end
end

--[[
  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).
  
  Note : wrapper récupérant les paramètres et appelant la « vraie » fonction
--]]
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"]
	
	return p.charte_m(infobox, categorie, tpe, diese)
end

return p