<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="fr">
	<id>https://wiki.aknotl.fr/index.php?action=history&amp;feed=atom&amp;title=Module%3APopulation_de_France%2FOutils</id>
	<title>Module:Population de France/Outils - Historique des versions</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.aknotl.fr/index.php?action=history&amp;feed=atom&amp;title=Module%3APopulation_de_France%2FOutils"/>
	<link rel="alternate" type="text/html" href="https://wiki.aknotl.fr/index.php?title=Module:Population_de_France/Outils&amp;action=history"/>
	<updated>2026-08-10T07:11:05Z</updated>
	<subtitle>Historique des versions pour cette page sur le wiki</subtitle>
	<generator>MediaWiki 1.46.0</generator>
	<entry>
		<id>https://wiki.aknotl.fr/index.php?title=Module:Population_de_France/Outils&amp;diff=499&amp;oldid=prev</id>
		<title>Theau 2 : 1 version importée</title>
		<link rel="alternate" type="text/html" href="https://wiki.aknotl.fr/index.php?title=Module:Population_de_France/Outils&amp;diff=499&amp;oldid=prev"/>
		<updated>2021-07-24T10:39:41Z</updated>

		<summary type="html">&lt;p&gt;1 version importée&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw-interface=&quot;&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;fr&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Version précédente&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Version du 24 juillet 2021 à 10:39&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;4&quot; class=&quot;diff-notice&quot; lang=&quot;fr&quot;&gt;&lt;div class=&quot;mw-diff-empty&quot;&gt;(Aucune différence)&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;
&lt;!-- diff cache key wiki_aknotl:diff:1.41:old-498:rev-499 --&gt;
&lt;/table&gt;</summary>
		<author><name>Theau 2</name></author>
	</entry>
	<entry>
		<id>https://wiki.aknotl.fr/index.php?title=Module:Population_de_France/Outils&amp;diff=498&amp;oldid=prev</id>
		<title>Infobox&gt;JessydeVilly : Exception affichage cantons</title>
		<link rel="alternate" type="text/html" href="https://wiki.aknotl.fr/index.php?title=Module:Population_de_France/Outils&amp;diff=498&amp;oldid=prev"/>
		<updated>2021-02-22T11:37:36Z</updated>

		<summary type="html">&lt;p&gt;Exception affichage cantons&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Nouvelle page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;--[[&lt;br /&gt;
  Sous-module de Module:Tableau population d&amp;#039;article de commune de France contenant&lt;br /&gt;
  diverses fonctions utilitaires (non classées dans les autres catégories)&lt;br /&gt;
--]]&lt;br /&gt;
&lt;br /&gt;
local p = {}&lt;br /&gt;
&lt;br /&gt;
-- il nous faut les constantes&lt;br /&gt;
p.constantes = require(&amp;quot;Module:Population de France/Constantes&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
-- fonction de dump récursif d&amp;#039;une table. Ne sert qu&amp;#039;au debug&lt;br /&gt;
function p.dump(t, level)&lt;br /&gt;
	level = level or 0&lt;br /&gt;
    for i,v in pairs(t) do&lt;br /&gt;
    	local txt = string.rep(&amp;#039;  &amp;#039;, level) .. tostring(i) .. &amp;quot;: &amp;quot;&lt;br /&gt;
        if type(v) == &amp;#039;table&amp;#039; then&lt;br /&gt;
        	mw.log(txt .. &amp;quot;{}&amp;quot;)&lt;br /&gt;
            p.dump(v, level + 1)&lt;br /&gt;
        else&lt;br /&gt;
        	mw.log(txt .. tostring(v))&lt;br /&gt;
        end&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- nettoie un paramètre : retourne nil si vide (via &amp;#039;trim&amp;#039;), sa valeur sinon&lt;br /&gt;
function p.nettoie(val)&lt;br /&gt;
	if (val == nil) then&lt;br /&gt;
		return val&lt;br /&gt;
	end&lt;br /&gt;
	if (type(val) ~= &amp;quot;string&amp;quot;) then&lt;br /&gt;
		return val&lt;br /&gt;
	end&lt;br /&gt;
	if ( mw.text.trim(val) == &amp;quot;&amp;quot;) then&lt;br /&gt;
		return nil&lt;br /&gt;
	end&lt;br /&gt;
	return val&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-- conserve &amp;#039;dp&amp;#039; décimales dans &amp;#039;val&amp;#039;&lt;br /&gt;
function p.round(val, dp)&lt;br /&gt;
	local mult = 10^(dp or 0)&lt;br /&gt;
	return math.floor(val * mult + 0.5) / mult&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-- transforme une couleur de type RRGGBB en valeurs entre 0 et 1 (r, g, b)&lt;br /&gt;
function p.color2rgb(color)&lt;br /&gt;
	-- on retire d&amp;#039;abord l&amp;#039;éventuel &amp;quot;nowiki&amp;quot; : &amp;lt;nowiki&amp;gt;#&amp;lt;/nowiki&amp;gt;RRGGBB ou &amp;lt;nowiki /&amp;gt;#RRGGBB&lt;br /&gt;
	color = mw.text.unstripNoWiki(color)&lt;br /&gt;
	-- on retire ensuite le &amp;#039;#&amp;#039; si présent : #RRGGBB ou &amp;amp;#35;RRGGBB&lt;br /&gt;
	color = color:gsub(&amp;#039;^#&amp;#039;, &amp;#039;&amp;#039;):gsub(&amp;#039;^&amp;amp;#35;&amp;#039;, &amp;#039;&amp;#039;)&lt;br /&gt;
&lt;br /&gt;
	local r, g, b&lt;br /&gt;
	if (color:match(&amp;#039;^%x%x%x%x%x%x$&amp;#039;)) then&lt;br /&gt;
		r = color:sub(1, 2)&lt;br /&gt;
		g = color:sub(3, 4)&lt;br /&gt;
		b = color:sub(5, 6)&lt;br /&gt;
	elseif (color:match(&amp;#039;^%x%x%x$&amp;#039;)) then&lt;br /&gt;
		r = color:sub(1, 1):rep(2)&lt;br /&gt;
		g = color:sub(2, 2):rep(2)&lt;br /&gt;
		b = color:sub(3, 3):rep(2)&lt;br /&gt;
	else&lt;br /&gt;
		return nil&lt;br /&gt;
	end&lt;br /&gt;
	local vr = tonumber(r, 16)&lt;br /&gt;
	local vg = tonumber(g, 16)&lt;br /&gt;
	local vb = tonumber(b, 16)&lt;br /&gt;
	return p.round(vr/255, 2) .. &amp;quot;,&amp;quot; .. p.round(vg/255, 2) .. &amp;quot;,&amp;quot; .. p.round(vb/255, 2)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-- retourne un message d&amp;#039;erreur &amp;quot;pas de données&amp;quot; (&amp;#039;donnees&amp;#039; est le nom du modèle/module cherché)&lt;br /&gt;
function p.err_nodata(fonc, donnees, err, court)&lt;br /&gt;
	local namescape = mw.title.getCurrentTitle().namespace&lt;br /&gt;
	-- pas de données (ni module ni modèle) : erreur&lt;br /&gt;
	local cat = p.constantes.cat_usage&lt;br /&gt;
	if (namespace == 0) then&lt;br /&gt;
		if (p.constantes.cats_erreur[err] ~= nil) then&lt;br /&gt;
			cat = cat .. p.constantes.cats_erreur[err]&lt;br /&gt;
		else&lt;br /&gt;
			cat = cat .. p.constantes.cats_erreur[1] -- par défaut&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	if (court) then&lt;br /&gt;
		return mw.ustring.format(p.constantes.err_data_c, p.constantes.code_erreur[err]) .. cat&lt;br /&gt;
	else&lt;br /&gt;
		return mw.ustring.format(p.constantes.err_data, fonc, p.constantes.code_erreur[err], donnees) .. cat&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-- retourne la forme élisée ou pas du mot selon la présence d&amp;#039;une voyelle ou pas&lt;br /&gt;
function p.apostrophe(mot, pre)&lt;br /&gt;
	if (mw.ustring.find(mot, &amp;#039;^[aeiouyAEIOUYéèàÉÈÀÊÂêâûîÛÎëïäüÄËÏÜ]&amp;#039;)) then&lt;br /&gt;
		if (pre == &amp;quot;de le&amp;quot;) then&lt;br /&gt;
			return &amp;quot;de l&amp;#039;&amp;quot;&lt;br /&gt;
		elseif (pre == &amp;quot;de&amp;quot;) then&lt;br /&gt;
			return &amp;quot;d&amp;#039;&amp;quot;&lt;br /&gt;
		else&lt;br /&gt;
			return &amp;quot;l&amp;#039;&amp;quot;&lt;br /&gt;
		end&lt;br /&gt;
	else&lt;br /&gt;
		if (pre == &amp;quot;de le&amp;quot;) then&lt;br /&gt;
			return &amp;quot;de&amp;quot;&lt;br /&gt;
		else&lt;br /&gt;
			return pre&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-- fonction qui retourne true si l&amp;#039;année indiquée doit être sélectionnée par rapport&lt;br /&gt;
--  aux règles d&amp;#039;affichage définies&lt;br /&gt;
function p.test_annee(annee, data)&lt;br /&gt;
	local sup1k = false&lt;br /&gt;
	local dep&lt;br /&gt;
&lt;br /&gt;
	-- si trop peu de données (commune nouvelle) on retourne tout&lt;br /&gt;
	if ((data[&amp;quot;dernier&amp;quot;] ~= nil) and (data[data[&amp;quot;dernier&amp;quot;]-5] == nil)) then&lt;br /&gt;
		return true&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if (data[&amp;quot;recens-prem&amp;quot;] == &amp;quot;annuel&amp;quot;) then&lt;br /&gt;
		sup1k = true&lt;br /&gt;
		if (data[&amp;quot;division&amp;quot;] == &amp;quot;canton&amp;quot;) then&lt;br /&gt;
			dep = 2013                         --  les cantons ayant été créés en 2015, on compte à partir de 2016, soit 2013&lt;br /&gt;
		else&lt;br /&gt;
			dep = 2006&lt;br /&gt;
		end&lt;br /&gt;
	else&lt;br /&gt;
		dep = data[&amp;quot;recens-prem&amp;quot;]&lt;br /&gt;
	end&lt;br /&gt;
	if (annee &amp;lt;= dep) then&lt;br /&gt;
		return true  -- commune de + de 10k → tous les ans avant 2006 inclus&lt;br /&gt;
	end              -- commune de - de 10k → tous les ans avant recens-prem inclus&lt;br /&gt;
	-- on accepte toujours la dernière&lt;br /&gt;
	if (annee == data[&amp;quot;dernier&amp;quot;]) then&lt;br /&gt;
		return true&lt;br /&gt;
	end&lt;br /&gt;
	-- ok pour les modulo 5 à partir du premier&lt;br /&gt;
	if ((annee - dep) % 5 == 0) then&lt;br /&gt;
		return true&lt;br /&gt;
	else&lt;br /&gt;
		return false&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- retourne la liste des années ayant une référence, sous forme d&amp;#039;une liste&lt;br /&gt;
function p.liste_annees(data)&lt;br /&gt;
	local txt = &amp;quot;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
	if (data[&amp;quot;minref&amp;quot;] ~= nil) then&lt;br /&gt;
		if (data[&amp;quot;minref&amp;quot;] ~= data[&amp;quot;maxref&amp;quot;]) then&lt;br /&gt;
			txt = txt .. &amp;quot;pour les années &amp;quot;&lt;br /&gt;
		else&lt;br /&gt;
			txt = txt .. &amp;quot;pour l&amp;#039;année &amp;quot;&lt;br /&gt;
		end&lt;br /&gt;
		local i&lt;br /&gt;
		for i = data[&amp;quot;minref&amp;quot;],data[&amp;quot;maxref&amp;quot;] do&lt;br /&gt;
			if ((data[i] ~= nil) and (data[i][&amp;quot;ref&amp;quot;] ~= nil)) then&lt;br /&gt;
				if (i &amp;gt; data[&amp;quot;minref&amp;quot;]) then&lt;br /&gt;
					if (i == data[&amp;quot;maxref&amp;quot;]) then&lt;br /&gt;
						txt = txt .. &amp;quot; et &amp;quot;&lt;br /&gt;
					else&lt;br /&gt;
						txt = txt .. &amp;quot;, &amp;quot;&lt;br /&gt;
					end&lt;br /&gt;
				end&lt;br /&gt;
				if (data[i][&amp;quot;ref&amp;quot;] ~= nil) then&lt;br /&gt;
					txt = txt .. &amp;quot;[&amp;quot; .. data[i][&amp;quot;ref&amp;quot;] .. &amp;quot; &amp;quot; .. i .. &amp;quot;]&amp;quot;&lt;br /&gt;
				else&lt;br /&gt;
					txt = txt .. i&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	return txt&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- retourne une liste d&amp;#039;années ayant des références, de 5 en 5 à partir&lt;br /&gt;
-- de la date indiquée&lt;br /&gt;
function p.liste_annees_pred(data, annee)&lt;br /&gt;
	local resu = {}&lt;br /&gt;
	local nb = 0&lt;br /&gt;
	if (data[&amp;quot;minref&amp;quot;] == nil) then&lt;br /&gt;
		return resu, 0&lt;br /&gt;
	end&lt;br /&gt;
	for i = data[&amp;quot;minref&amp;quot;], annee-1 do&lt;br /&gt;
		if ((data[i] ~= nil) and (data[i][&amp;quot;ref&amp;quot;] ~= nil)) then&lt;br /&gt;
			table.insert(resu, 1, i)&lt;br /&gt;
			nb = nb + 1&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	return resu, nb&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- fin du module&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>Infobox&gt;JessydeVilly</name></author>
	</entry>
</feed>