Module:Calcul démographie

 Documentation[voir] [modifier] [historique] [purger]

Ce module sert à calculer automatiquement l'évolution de la population d'une ville à partir des données dans les modèles Données/ville/évolution population

-- Le module Calcul Démographie sert à calculer des statistiques sur la démographie
-- à partir des données présentes dans les modèles

local p = {}
-- Variable pour la gestion des erreurs
local bad = ""

-- Récupérer la ville courante à partir du titre de la page
function p.Ville()
    if (string.sub(mw.title.getCurrentTitle().text, 0, 16) == 'Démographie de ') then
        return string.sub(mw.title.getCurrentTitle().text, 17)
    end
    if (string.sub(mw.title.getCurrentTitle().text, 0, 16) == 'Démographie du ') then
        return "Le " .. string.sub(mw.title.getCurrentTitle().text, 17)
    end
    if (string.sub(mw.title.getCurrentTitle().text, 0, 15) == 'Démographie d\'') then
        return string.sub(mw.title.getCurrentTitle().text, 16)
    end
    if (string.sub(mw.title.getCurrentTitle().text, 0, 17) == 'Démographie des ') then
        return "Les " .. string.sub(mw.title.getCurrentTitle().text, 18)
    end
    return mw.title.getCurrentTitle().text
end

-- Récupérer une valeur "val" dans le modèle "data"
function getval(data, val)
	return mw.getCurrentFrame():expandTemplate{title = data, args = { val } }
end	

-- Trouver la population de l'année 2006 dans le modèle "data"
function find2006(data)
	local i = 1
	local value = getval(data, "an" .. i)
	while value ~= "" do
    if value == '2006' then
	   	    return getval(data, "pop" .. i)
	   	end
	   	i = i + 1
	   	value = getval(data, "an" .. i)
    end
    bad = "[[Catégorie:Erreur de calcul de population]]"
	return 1234
end

-- Fonction exportée : calculer l'évolution de la population entre 2006 et la 
-- dernière année remplie de la ville "ville"
function p._CalculEvolutionPopulationDepuis2006(ville)
	local data =  "Modèle:Données/" ..  ville .. "/évolution population"
    return bad .. math.floor((getval(data, "pop") /  find2006(data) - 1) * 1000) / 10
end

-- Fonction exportée : récupérer le nom de la ville à partir du titre de la page
-- et calculer l'évolution de la population de cette ville entre 2006 et la 
-- dernière année remplie dans les statistiques
function p.CalculEvolutionPopulationDepuis2006()
	return p._CalculEvolutionPopulationDepuis2006(p.Ville())
end

-- Fonction exportée : récupérer le nom de la ville en argument et calculer
-- l'évolution de la population de cette ville entre 2006 et la dernière année
-- remplie dans les statistiques

function p.CalculEvolutionPopulationVilleDepuis2006(frame)
	local args = frame:getParent().args
	return p._CalculEvolutionPopulationDepuis2006(args[1])
end
return p