Aller au contenu

Module:Démographie

Cette page est protégée.
Une page de Wikipédia, l'encyclopédie libre.
Ceci est une version archivée de cette page, en date du 7 juin 2013 à 14:04 et modifiée en dernier par Hexasoft (discuter | contributions) (préparation : test de remplacement {{m|Démographie}}). Elle peut contenir des erreurs, des inexactitudes ou des contenus vandalisés non présents dans la version actuelle.
(diff) ← Version précédente | Version actuelle (diff) | Version suivante → (diff)

 Documentation[voir] [modifier] [historique] [purger]
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ôles
  • charte_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 table param 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
  • p.couleur(nom) : ajoute un "#" au début de la chaîne nom si non présent → fonction supprimée car devenue inutile
  • p.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).


--[[
  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