Module:Population EPCI
Apparence
La documentation de ce module est générée par le modèle {{Documentation module}}.
Les éditeurs peuvent travailler dans le bac à sable (créer).
Voir les statistiques d'appel depuis le wikicode sur l'outil wstat et les appels depuis d'autres modules.
--[[
Test : module pour calculer la population totale d'un groupement de communes
--]]
local p = {}
function p.erreur(texte)
return '<span class="error" style="font-size: 0.9em;">' .. (texte or "Erreur non définie") .. '</span>'
end
--[[
Permet de calculer la population d'un syndicat constitué de plusieurs EPCI en retournant le total des populations des EPCI indiqués.
Ne permet toutefois pas de calculer la population d'un syndicat constitué d'EPCI et de communes isolées. Pour la population d'un ensemble de communes isolées, il convient d'utiliser le module "Population totale".
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 un EPCI
if (pargs[1] == nil) then
p.erreur("Aucune commune fournie.")
end
db = "absent=" .. (absent or "nil") .. " ; erreur=" .. erreur .. " / "
-- 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 = frame:preprocess("{{Données/" .. c .. '/population|pop}}')
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 l'EPCI '" .. pargs[i] .. "' (" .. (tmp or "") .. ") ")
elseif (erreur == "cat") then
err = "[[Catégorie:EPCI invalide pour Population totale]]"
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 l'EPCI '" .. pargs[i] .. "' (" .. (tmp or "") .. ") ")
elseif (erreur == "cat") then
err = "[[Catégorie:Commune invalide pour Population totale]]"
end -- else "rien"
end
i = i + 1
end
-- on retourne la valeur calculée + les erreurs éventuelles
return tostring(total) .. err
end
return p