Module:Population totale
Wikimedia module / De Wikipedia, l'encyclopédie encyclopedia
local p = {}
--[[
Test : module pour calculer la population totale d'un groupement de communes
--]]
function p.erreur(texte) return '' .. (texte or "Erreur non définie") .. '' end
--[[
Retourne le total des populations des communes indiquées Paramètres : - paramètres non nommés : le nom des communes (titre des articles) - absent : gère que faire en cas de commune dont les données sont inconnues → "fatal" : ne traite pas les données (ne fait rien). Sinon l'entrée erronée est ignorée - erreur : méthode utilisée pour prévenir d'une erreur → "rien" : ne pas générer d'erreur → "texte" : insérer l'erreur dans le texte retourné → "cat" : insérer une catégorie d'erreur (Catégorie:Commune invalide pour Population totale)
--]] function p.population(frame) local pargs = frame:getParent().args -- récupération des options local absent = frame.args["absent"] or pargs["absent"] local erreur = frame.args["erreur"] or pargs["erreur"]
local err = "" -- erreur à ajouter à la fin local db = "" -- debug
-- vérification paramètres if (absent ~= "fatal" and absent ~= nil) then return p.erreur("Paramètre 'absent' invalide.") end if (erreur ~= "rien" and erreur ~= "texte" and erreur ~= "cat" and erreur ~= nil) then return p.erreur("Paramètre 'erreur' invalide.") end if (erreur == nil) then erreur = "texte" end -- valeur par défaut
-- temp : pour tester pargs = frame.args
-- présence d'au moins une commune if (pargs[1] == nil) then p.erreur("Aucune commune fournie.") end
db = "absent=" .. (absent or "nil") .. " ; erreur=" .. erreur .. " / "
local dernierePop = require ("Module:Population de France").derniere_population_m -- compte population local total = 0 -- parcours des communes local i = 1 while (pargs[i] ~= nil) do local c = mw.text.trim(pargs[i]) -- nettoyage local tmp = dernierePop{nom = c} local res = true -- on récupère le nombre et on l'ajoute local val = tonumber(tmp) if (val == nil) then res = false else -- ok, on ajoute le nombre total = total + val end -- si pas un nombre on traite comme une erreur if (res == false) then -- if et pas else car res peut avoir changé de valeur -- une erreur if (absent == "fatal") then -- on quitte sans traiter. Type d'erreur à insérer ? if (erreur == "texte") then err = err .. p.erreur("Pas de données pour la commune '" .. pargs[i] .. "' (" .. (tmp or "") .. ") ") elseif (erreur == "cat") then err = "" end -- else "rien" return err -- on retourne juste l'erreur end -- pas fatal, on prépare l'erreur à ajouter (ou pas) if (erreur == "texte") then err = err .. p.erreur("Pas de données pour la commune '" .. pargs[i] .. "' (" .. (tmp or "") .. ") ") elseif (erreur == "cat") then err = "" end -- else "rien" end i = i + 1 end
-- on retourne la valeur calculée + les erreurs éventuelles return tostring(total) .. err end
return p