Module:Populacion totâla
Apparence
La documentation pour ce module peut être créée à Module:Populacion totâla/doc
--[[
Test : module pour calculer la population totale d'un groupement de communes
--]]
local p = {}
function p.fota(texto)
return '<span class="error" style="font-size: 0.9em;">' .. (texto or "Fôta pas dèfenia") .. '</span>'
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.populacion(frame)
local pargs = frame:getParent().args
-- récupération des options
local absent = frame.args["absent"] or pargs["absent"]
local fota = frame.args["fôta"] or pargs["fôta"]
local fot = "" -- erreur à ajouter à la fin
local db = "" -- debug
-- vérification paramètres
if (absent ~= "fatal" and absent ~= nil) then
return p.fota("Paramètro 'absent' envalido.")
end
if (fota ~= "ren" and fota ~= "tèxto" and fota ~= "cat" and fota ~= nil) then
return p.fota("Paramètro 'fôta' envalido.")
end
if (fota == nil) then fota = "tèxto" end -- valeur par défaut
-- temp : pour tester
pargs = frame.args
-- présence d'au moins une commune
if (pargs[1] == nil) then
p.fota("Gins de comena balyêe.")
end
db = "absent=" .. (absent or "nil") .. " ; fôta=" .. fota .. " / "
-- 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("{{Populacion de France/dèrriére_pop||" .. 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 (fota == "tèxto") then
fot = fot .. p.fota("Gins de balyês por la comena '" .. pargs[i] .. "' (" .. (tmp or "") .. ") ")
elseif (fota == "cat") then
fot = "[[Catègorie:Comena envalida por Populacion totâla]]"
end -- else "ren"
return fot -- on retourne juste l'erreur
end
-- pas fatal, on prépare l'erreur à ajouter (ou pas)
if (fota == "tèxto") then
fot = fot .. p.fota("Gins de balyês por la comena '" .. pargs[i] .. "' (" .. (tmp or "") .. ") ")
elseif (fota == "cat") then
fot = "[[Catègorie:Comena envalida por Populacion totâla]]"
end -- else "ren"
end
i = i + 1
end
-- on retourne la valeur calculée + les erreurs éventuelles
return tostring(total) .. fot
end
return p