Aller au contenu

Module:Populacion totâla

De Vouiquipèdia, l’enciclopèdia abada.

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