Aller au contenu

Module:Population de France/Outils

Cette page fait l’objet d’une mesure de semi-protection étendue.
Une page de Wikipédia, l'encyclopédie libre.
Ceci est une version archivée de cette page, en date du 10 janvier 2017 à 11:17 et modifiée en dernier par Hexasoft (discuter | contributions). Elle peut contenir des erreurs, des inexactitudes ou des contenus vandalisés non présents dans la version actuelle.

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

Utilisation

Contient diverses fonctions utilisées dans le module principal et certains sous-modules :

  • p.dump(t, level) : debug. Affiche dans la console le contenu d'une table (récursivement). Ne pas utiliser en prod.
  • p.round(val, dp) : arrondi val à dp décimale(s)
  • p.color2rgb(color) : transforme une couleur color de la forme #RRVVBB à la forme rgb(r, v, b) (utilisé pour l'appel au modèle {{Histogramme population manuel}})
  • p.err_nodata(fonc, donnees, err, court) : retourne un message d'erreur pour la fonction fonc, vis-à-vis du module de données donnees, avec le type d'erreur err. Si court est vrai (true) la version courte est retournée.
  • p.test_annee(annee, data) : retourne vrai (true) si l'année annee est à utiliser dans lestableaux et graphiques (selon les règles définies pour les affichages)
  • p.liste_annees(data) : retourne la liste des années ayant une référence, pour l'entité dont les données sont dans data. Cette liste prend la forme : pour les années [ref1 année1], [ref2 année2], … [refX annéeX] et [refY annéeY]. Utilisé pour les notes associées à certains textes.
  • p.liste_annees_pred(data, annee) : retourne la liste des années qui précèdent annee et qui ont une référence associée, de 5 en 5, par ordre croissant, pour l'entité dont les données sont dans data. Retourne en seconde valeur le nombre d'éléments retournés.
--[[
  Sous-module de Module:Tableau population d'article de commune de France contenant
  diverses fonctions utilitaires (non classées dans les autres catégories)
--]]

local p = {}

-- il nous faut les constantes
p.constantes = require("Module:Population de France/Constantes")

-- fonction de dump récursif d'une table. Ne sert qu'au debug
function p.dump(t, level)
	level = level or 0
    for i,v in pairs(t) do
    	local txt = string.rep('  ', level) .. tostring(i) .. ": "
        if type(v) == 'table' then
        	mw.log(txt .. "{}")
            p.dump(v, level + 1)
        else
        	mw.log(txt .. tostring(v))
        end
    end
end


-- conserve 'dp' décimales dans 'val'
function p.round(val, dp)
	local mult = 10^(dp or 0)
	return math.floor(val * mult + 0.5) / mult
end


-- transforme une couleur de type RRGGBB en valeurs entre 0 et 1 (r, g, b)
function p.color2rgb(color)
	-- on vire le '#' si présent
	if (mw.ustring.sub(color, 1, 1) == "#") then
		color = mw.ustring.sub(color, 2)
	end
	local r = mw.ustring.sub(color, 1, 2)
	local g = mw.ustring.sub(color, 3, 4)
	local b = mw.ustring.sub(color, 5, 6)
	local vr = tonumber(r, 16)
	local vg = tonumber(g, 16)
	local vb = tonumber(b, 16)
	if ((not vr) or (not vg) or (not vb)) then
		return nil
	end
	return p.round(vr/255, 2) .. "," .. p.round(vg/255, 2) .. "," .. p.round(vb/255, 2)
end


-- retourne un message d'erreur "pas de données" ('donnees' est le nom du modèle/module cherché)
function p.err_nodata(fonc, donnees, court)
	local namescape = mw.title.getCurrentTitle().namespace
	-- pas de données (ni module ni modèle) : erreur
	local cat = p.constantes.cat_usage
	if (namespace == 0) then
		cat = cat .. p.constantes.cat_errdata
	end
	if (court) then
		return p.constantes.err_data_c
	else
		return mw.ustring.format(p.constantes.err_data, fonc, donnees) .. cat
	end
end

-- retourne un message d'erreur "données invalides" ('donnees' est le nom du modèle/module utilisé)
function p.err_baddata(fonc, donnees, court)
	local namescape = mw.title.getCurrentTitle().namespace
	-- données invalides : erreur
	local cat = p.constantes.cat_usage
	if (namespace == 0) then
		cat = cat .. p.constantes.cat_errdata
	end
	if (court) then
		return p.constantes.err_cont_c
	else
		return mw.ustring.format(p.constantes.err_cont, fonc, donnees) .. cat
	end
end

-- retourne un message d'erreur "données invalides" ('donnees' est le nom du modèle/module utilisé)
function p.err_inc(fonc, donnees, court)
	local namescape = mw.title.getCurrentTitle().namespace
	-- données invalides : erreur
	local cat = p.constantes.cat_usage
	if (namespace == 0) then
		cat = cat .. p.constantes.cat_errdata
	end
	if (court) then
		return p.constantes.err_inc_c
	else
		return mw.ustring.format(p.constantes.err_inc, fonc, donnees) .. cat
	end
end


return p