Module:Démographie
- Note : ce module est protégé et utilisé sur de nombreux articles. Vous pouvez pour ce faire utiliser Module:Démographie/Bac à sable dont le code est identique. Une page testant le résultat de ce module de test se trouve ici : Discussion module:Démographie/Bac à sable/Documentation.
Utilisation
Fonctions exportables :
demographie(frame)
– génère une table de années / population avec diverses options et contrôlescharte_de_couleur(frame)
– retourne un code couleur HTML en fonction du nom de charte désiré et du nom de couleur
Fonction directement utilisable depuis un autre module :
demographie_m(param)
− fonction identique à la précédente (en fait la précédente appelle celle-ci), mais utilisable depuis un autre module. La tableparam
contient les mêmes paramètres (en version sans accent et "-" remplacés par "_" : par ex. "années-fond" → "annees_fond")
charte_de_couleur
Cette fonction ne doit plus être utilisée (si elle l'a été). Désormais c'est Module:Chartes qu'il faut utiliser pour cela.
La fonction reste présente le temps de s'assurer qu'elle n'est pas utilisée.
Cette fonction attend deux paramètres nom nommés : nom et code.
- nom : peut valoir « communes » ou « communes contraste ». Si une valeur différente est fournie la couleur #FFFFFF est retournée
- code : peut valoir canton, région… (voir table
p.chartes
). Si une valeur inconnue est fournie retourne la couleur associée à « défaut »
Code : pas de difficulté particulière.
Mise à jour : probablement uniquement modifier le contenu de la table p.chartes
.
demographie
Cette fonction génère un tableau pour mettre en forme des séries de "année = population", avec diverses fonctionnalités.
Voir la documentation du modèle pour son utilisation.
Description des fonctions internes :
p.erreur(message, cle)
: enregistre une erreur (un message en clair et une clé de tri pour la catégorie). Ces erreurs sont exploitées à la fin, soit pour insertion en catégorie soit pour insertion en texte (selon le namespace)p.lit_parametre(nom)
: lit la valeur du paramètre nommé nom passé lors de l'appel au modèle, ou nil si inexistant→ fonction supprimée car devenue inutilep.couleur(nom)
: ajoute un "#" au début de la chaîne nom si non présentp.sans_nl(texte)
: supprime l'éventuel <br/> en début de texte
Déroulement du code de p.demographie()
:
- lecture de la valeur de tous les paramètres référencés (table p.parametres)
- gestion de toutes les valeurs par défaut pour les paramètres récupérés (et gestion des valeurs invalides)
- récupération des paramètres non nommés (qui correspondent aux années. Ex. : 1990=xxxx) dans un table. Par la même occasion vérification qu'il n'y a pas de paramètre nommé qui ne corresponde à rien.
- tri de cette table pour ordonner les années (les paramètres non nommés n'ont pas d'ordre).
- parcours de la table triée pour générer la structure du tableau final (lignes / colonnes).
- ouverture du div général
- boucle de parcours sur les lignes à générer
- ouverture du tableau (et gestion du titre selon les cas)
- parcours des colonnes pour créer les années
- parcours des colonnes pour créer les valeurs de population correspondante
- fermeture du tableau
- gestion des éléments insérés en pied de tableau :
- notes
- sources
- sansdoublescomptes et enquêteannuelle
- liste des erreurs, éventuellement (si pas espace encyclopédique)
- insertion éventuelle des catégories d'erreur (si espace encyclopédique)
- fermeture du div général
La fonction détecte les paramètres invalides, à l'exception de ceux commençant par « _ ». Cette exception sert aux modèles {{Tableau population}} et {{Tableau population d'article de commune de France}} (ainsi que {{Tableau population d'article de commune de France/case année}}), qui appellent Module:Démographie avec un nombre fixe de paramètres (voir cette discussion).
La documentation de ce module est générée par le modèle {{Documentation module}}.
Elle est incluse depuis sa sous-page de documentation. Veuillez placer les catégories sur cette page-là.
Les éditeurs peuvent travailler dans le bac à sable (modifier).
Voir les statistiques d'appel depuis le wikicode sur l'outil wstat et les appels depuis d'autres modules.
--[[
Module reprenant les fonctionnalités du modèle Démographie.
En cours de test.
--]]
local p = {} -- le module
-- table des chartes reconnues, avec leurs code couleur
p.chartes = {
["commune"] = { ["normal"] = "ddffdd", ["contraste"] = "b2e5b2" },
["intercommunalité"] = { ["normal"] = "ffe2bf", ["contraste"] = "fbbf77" },
["canton"] = { ["normal"] = "ece5ca", ["contraste"] = "d4c68d" },
["arrondissement"] = { ["normal"] = "e1e1e1", ["contraste"] = "b1b1b1" },
["département"] = { ["normal"] = "f6f3dd", ["contraste"] = "d8d2bc" },
["région"] = { ["normal"] = "bbdefd", ["contraste"] = "58abf4" },
["défaut"] = { ["normal"] = "ddffdd", ["contraste"] = "b2e5b2" }
}
--[[
Fonction exportée reprenant le fonctionnement de {{m|Charte de couleur}}
--]]
function p.charte_de_couleur(frame)
local pframe = frame:getParent()
-- les deux paramètres
local nom = mw.ustring.lower(mw.text.trim(pframe.args[1] or ""))
local code = mw.ustring.lower(mw.text.trim(pframe.args[2] or ""))
-- pas de nom ou non reconnu → par défaut
if (nom == "" or (nom ~= "communes" and nom ~= "communes contraste")) then
return "ffffff"
end
-- le sélecteur de couleur
local sel
if (nom == "communes") then
sel = "normal"
else
sel = "contraste"
end
-- absence du code → défaut
if (code == "") then
code = "défaut"
end
-- on vérifie que le code existe
if (p.chartes[code] == nil) then
code = "défaut" -- idem, par défaut
end
-- on retourne la couleur
return p.chartes[code][sel]
end
--[[
Fonction de récupération d'un paramètre nommé.
--]]
function p.lit_parametre(nom)
if (type(nom) ~= "string") then
return nil -- pas un paramètre nommé
end
return p.frame.args[nom] or p.pframe.args[nom] -- du modèle, puis de l'article
end
--[[
Fonction principale
--]]
function p.demographie(frame)
-- pour simplifier on stocke la frame et la pframe en global
p.frame = frame
p.pframe = frame:getParent()
-- on récupère les paramètres nommés
local titre = p.lit_parametre("titre")
local charte = p.lit_parametre("charte")
local colonnes = p.lit_parametre("colonnes")
local largeur_tableau = p.lit_parametres("largeur-tableau")
-- valeurs par défaut des colonnes
if (colonnes == nil) then
colonnes = 9
else
colonnes = tonumber(colonnes) -- pour que ce soit un nombre
end
-- largeur par défaut : 5.4em * colonnes
if (largeur_tableau == nil) then
largeur_tableau = colonnes*5.4 .. "em"
end
if (charte == nil) then
charte = "défaut"
else
-- on valide la charte
charte = mw.ustring.lower(charte)
if (p.chartes[charte] == nil) then
-- charte inconnue : erreur
return "<span class=\"error\">La valeur du paramètre ''charte'' (" .. charte .. ") n'est pas valide.</span>"
end
end
-- on valide les colonnes
if (type(colonnes) ~= "number" or colonnes < 1) then
-- charte inconnue : erreur
return "<span class=\"error\">La valeur du paramètre ''colonnes'' (" .. (colonnes or "<pas un nombre>") .. ") n'est pas valide.</span>"
end
-- on y va…
return ""
end
return p -- on retourne le module