« Module:Chartes » : différence entre les versions

De Lagny-sur-Marne Wiki
Aller à la navigation Aller à la recherche
0x010D (discussion | contributions)
les données étaient bien évaluées une seule fois, en revanche ainsi dataWrapper() est aussi exécuté une seule fois
0x010D (discussion | contributions)
m retouches indentation
Ligne 43 : Ligne 43 :
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 80 : Ligne 80 :
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
end


return p
return p

Version du 16 octobre 2016 à 03:11

--[[

 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")

--[[

 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

-- interruption si le chargement du module de données a échoué if (not success) then return "Problème interne au module (données)" 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 "Problème interne au module (infobox)" 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 "Problème interne au module (type)" 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 "Problème interne au module (élément)" end

-- on retourne la valeur if (diese == "oui") then return "#" .. data[infobox][tpe][n] else return data[infobox][tpe][n] end end

return p