Module:Populacion de France/Entroduccions

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

La documentation pour ce module peut être créée à Module:Populacion de France/Entroduccions/doc

--[[
  Sous-module de Module:Tableau population d'article de commune de France contenant
  les fonctions de génération des introductions associées au divisions
--]]

local p = {}

p.outils = require("Module:Populacion de France/Outils")
p.donnees = require("Module:Populacion de France/Balyês")
p.constantes = require("Module:Populacion de France/Constantes")


-- textes, "constantes", mis en variables pouralléger le code
p.entro_comencement = [=[
L'évolution du nombre d'habitants est connue à travers les [[Recensement de la population|recensements de la population]]
effectués dans la commune depuis %d. À partir de 2006, les
[[Histoire du recensement de la population en France#Le recensement rénové en France (depuis 2004)|populations légales]]
des communes sont publiées annuellement par l'[[Institut national de la statistique et des études économiques|Insee]]. Le recensement repose désormais sur
une collecte d'information annuelle, concernant successivement tous
les territoires communaux au cours d'une période de cinq ans. ]=]

-- note : ci-dessous les nombres+unités sont codés « en dur » pour éviter d'avoir à appeler en plus ces modèles
-- deuxième partie, commune < 10000
p.entro_petiota = [=[
Pour les communes de moins de 10&nbsp;000&nbsp;habitants, une enquête de recensement portant sur toute la population est
réalisée tous les cinq&nbsp;ans, les populations légales des années intermédiaires étant quant à elles estimées par
interpolation ou extrapolation]=]

p.entro_petiota2 = [=[
Pour la commune, le premier recensement exhaustif entrant dans le cadre du nouveau dispositif a été réalisé en ]=]

-- idem, pour commune > 10000
p.entro_granta = [=[
Pour les communes de plus de 10&nbsp;000&nbsp;habitants les recensements ont lieu chaque année à la suite d'une enquête par
sondage auprès d'un échantillon d'adresses représentant 8 % de leurs logements, contrairement aux autres communes qui ont un
recensement réel tous les cinq ans]=]

p.entro_nota = [=[
Par convention dans Wikipédia, le principe a été retenu de n’afficher dans le tableau 
des recensements et le graphique, pour les populations légales postérieures à 1999, 
que les populations correspondant à une enquête exhaustive de recensement pour les 
communes de moins de 10&nbsp;000&nbsp;habitants, et que les populations des années 2006, 2011, 2016, etc. 
pour les communes de plus de 10&nbsp;000&nbsp;habitants, ainsi que la dernière population légale publiée 
par l’Insee pour l'ensemble des communes. ]=]

p.entro_drom = [=[
L'évolution du nombre d'habitants est connue à travers les [[Recensement de la population|recensements de la population]] 
effectués dans la commune depuis %d, premier recensement postérieur à la départementalisation de 
1946. À partir de 2006, les [[Histoire du recensement de la population en France#Le recensement rénové en France (depuis 2004)|populations légales]] 
des communes sont publiées annuellement par l'[[Institut national de la statistique et des études économiques|Insee]]. 
Le recensement repose désormais sur une collecte d'information annuelle, concernant successivement tous les 
territoires communaux au cours d'une période de cinq ans. ]=]

p.entro_poli = [=[
La loi relative à la démocratie de proximité du 27 février 2002 a, 
dans ses articles consacrés au recensement de la population, instauré 
des recensements de la population tous les cinq ans en [[Nouvelle-Calédonie]], 
en [[Polynésie française]], à [[Mayotte]] et dans les îles [[Wallis-et-Futuna]], ce qui n’était pas le cas auparavant]=]


---- ceux-ci sont en fait vide mais séparés pour permettre des évolutions futures
-- dédié introduction canton
function p.entro_canton(data)
	return ""
end
-- dédié introduction arrondissement
function p.entro_arrondissement(data)
	return ""
end
-- dédié introduction fractions
function p.entro_fraccion(data)
	return ""
end
-- dédié introduction departement
function p.entro_departament(data)
	return ""
end
-- dédié introduction région
function p.entro_region(data)
	return ""
end
-- dédié introduction pays
function p.entro_payis(data)
	return ""
end


-- intro "commune" avec traitement données
function p.entro_ccc(data, comencement)
	if (data["premier"] == nil) then
		return "" -- protection
	else
		return mw.ustring.format(comencement, data["premier"])
	end
end

-- partie +10000
function p.entro_p1k(data)
	local resu = p.entro_granta
	resu = resu .. mw.getCurrentFrame():extensionTag{ name = "ref",
			    content = "[https://www.insee.fr/fr/information/2383265 L'organisation du recensement], sur le site de l'Insee" }
	-- la note
	resu = resu .. "<sup class=\"reference cite_virgule\">,</sup>" .. mw.getCurrentFrame():extensionTag{ name = "ref", args = { group = 'Nota' },
				content = p.entro_nota } .. "."
	return resu
end

-- partie -10000
function p.entro_m1k(data)
	local resu = p.entro_petiota
	-- partie de "petit" qui nécessite calcul et traitements
	resu = resu .. mw.getCurrentFrame():extensionTag{ name = "ref",
		   content = "[https://www.insee.fr/fr/information/2383265 L'organisation du recensement], sur le site de l'Insee." }
		   .. "."
	if ((data["recens-prem"] ~= nil) and (data["sorsa_colecta"] ~= nil)) then
		resu = resu .. " " .. p.entro_petiota2 .. data["recens-prem"]
		resu = resu .. mw.getCurrentFrame():extensionTag{ name = "ref",
			    content = "[" .. data["sorsa_colecta"] .. " Calendrier départemental des recensements], sur [http://insee.fr/ le site de l'Insee]" } .. "."
	end
	return resu
end


-- par type de commune
function p.entro_c_basa(data, sup1k)
	local resu = p.entro_ccc(data, p.entro_comencement)
	if (not sup1k) then
		resu = resu .. p.entro_m1k(data)
	else
		resu = resu .. p.entro_p1k(data)
	end
	return resu
end
function p.entro_c_drom(data, sup1k)
	local resu = p.entro_ccc(data, p.entro_drom)
	if (not sup1k) then
		resu = resu .. p.entro_m1k(data)
	else
		resu = resu .. p.entro_p1k(data)
	end
	return resu
end
function p.entro_c_com1(data, sup1k)
	local resu = p.entro_poli
	resu = resu .. mw.getCurrentFrame():extensionTag{ name = "ref",
			    content = "[https://www.legifrance.gouv.fr/affichTexte.do?cidTexte=JORFTEXT000000593100&categorieLien=cid#LEGISCTA000006085425 Titre V de la loi n° 2002-276 du 27 février 2002 relative à la démocratie de proximité]" } .. "."
	return resu
end
function p.entro_c_com2(data, sup1k)
	local resu = p.entro_poli
	resu = resu .. mw.getCurrentFrame():extensionTag{ name = "ref",
			    content = "[https://www.legifrance.gouv.fr/affichTexte.do?cidTexte=JORFTEXT000000593100&categorieLien=cid#LEGISCTA000006085425 Titre V de la loi n° 2002-276 du 27 février 2002 relative à la démocratie de proximité]" } .. "."
	if (data["recens-prem"] ~= nil) then
		local lst, nb = p.outils.lista_ans_pred(data, data["recens-prem"])  -- liste des recensements précédents
		resu = resu .. " Pour la commune, le premier recensement exhaustif entrant dans le cadre du nouveau dispositif a été réalisé en " ..
		        data["recens-prem"]
		if (nb == 0) then
			resu = resu .. "." -- pas d'années précédentes
		elseif (nb == 1) then
			resu = resu .. ", le précédent recensement a eu lieu en " .. lst[1] .. "." -- un seul
		else
			resu = resu .. ", les précédents recensements ont eu lieu en "
			for i = 1, nb do
				if (i == 1) then
					resu = resu .. lst[i]
				elseif (i == nb) then
					resu = resu .. " et " .. lst[i] .. "."
				else
					resu = resu .. ", " .. lst[i]
				end
			end
		end
	end
	return resu
end
function p.entro_c_nov(data)
	local resu = "L'évolution du nombre d'habitants est connue à travers les recensements de la population effectués dans la commune depuis sa création."
	return resu
end


-- dédié introduction des différents types de communes
function p.entro_comena(data)
	local resu
	
	-- selon la population (< ou > 10000 habitants)
	local sup1k = false
	if (data["recens-prem"] == "anuâl") then
		sup1k = true
	end
	
	if (data["division"] == "comena") then
		resu = p.entro_c_basa(data, sup1k);
	elseif (data["division"] == "comena en DROM") then
		resu = p.entro_c_drom(data, sup1k);
	elseif (data["division"] == "comena en COM1") then
		resu = p.entro_c_com1(data, sup1k);
	elseif (data["division"] == "comena en COM2") then
		resu = p.entro_c_com2(data, sup1k);
	elseif (data["division"] == "comena novèla") then
		resu = p.entro_c_nov(data, sup1k);
	else
		return ""  -- c'est une erreur mais on ne devrait jamais être ici avec une division non gérée
	end

	return resu
end


-- partie évolution de population
function p.evolucion(data)
	local resu = ""
	-- dernière partie : chiffres, comparatifs…
	resu = resu .. "En " .. data["derrier"] .. ", "
	if (data["division"] == "canton") then
		resu = resu .. "lo canton comptâve "
	elseif (data["division"] == "arrondissement") then
		resu = resu .. "l’arrondissement comptâve "
	elseif (data["division"] == "dèpartament") then
		resu = resu .. "lo dèpartament comptâve "
	elseif (data["division"] == "règ·ion") then
		resu = resu .. "la règ·ion comptâve "
	elseif (data["division"] == "payis") then
		resu = resu .. "lo payis comptâve "
	else -- commune
		resu = resu .. "la comena comptâve "
	end
	resu = resu .. mw.language.getContentLanguage():formatNum(data[data["derrier"]]["pop"]) .. " habitents"
	-- ajout d'une note à ce propos
	resu = resu .. mw.getCurrentFrame():extensionTag{ name = "ref", content =
				"Population municipale légale en vigueur au 1<sup>er</sup>&nbsp;janvier&nbsp;" .. data["derrier"]+3 ..
				", millésimée " .. data["derrier"] .. ", définie dans les limites territoriales en vigueur au 1<sup>er</sup>&nbsp;janvier&nbsp;" .. data["derrier"]+2 ..
				", date de référence statistique : 1<sup>er</sup>&nbsp;janvier&nbsp;" .. data["derrier"]..".", args = { group = "Nota" } }
	-- pas d'augmentation / diminution pour les arrondissements
	if (data["division"] == "arrondissement") then
		resu = resu .. "."
		return resu
	end
	-- calcul de l'augmentation / diminution
	local delta = p.balyes.variacion_texto(data)
	if (delta ~= nil) then
		resu = resu .. ", " .. delta
		-- seulement si on a une variation
		-- département associé (sauf pour les départements)
		local loadedData, wlm = p.balyes.charge_balyes(data["nom-dep"])
		local deltad = nil
		local nomdwp = nil
		if ((loadedData ~= nil) and (wlm == true)) then
			nomdwp = loadedData["nom-wp"]
			deltad = p.balyes.variacion(loadedData, false)
		end
		-- France
		loadedData, wlm = p.balyes.charge_balyes("France")
		local deltaf = nil
		if (loadedData ~= nil) then  -- pour la France on ne teste que la présence des données
			deltaf = p.balyes.variacion(loadedData, false)
		end
		-- dernière partie
		if ((deltad == nil) and (deltaf == nil)) then
			resu = resu .. "."
		else
			resu = resu .. " ("
			if (deltad ~= nil) then
				if (deltad > 0) then
					resu = resu .. nomdwp .. " : +" .. mw.language.getContentLanguage():formatNum(deltad) .. " %"
				else
					resu = resu .. nomdwp .. " : " .. mw.language.getContentLanguage():formatNum(deltad) .. " %"
				end
			end
			if (deltaf ~= nil) then
				if (deltad ~= nil) then
					resu = resu .. ", "
				end
				if (deltaf > 0) then
					resu = resu .. "[[Démographie de la France|France]] hors [[Mayotte]] : +" .. mw.language.getContentLanguage():formatNum(deltaf) .. " %"
				else
					resu = resu .. "[[Démographie de la France|France]] hors [[Mayotte]] : " .. mw.language.getContentLanguage():formatNum(deltaf) .. " %"
				end
			end
			resu = resu .. ")."
		end
	else
		resu = resu .. "."
	end
	return resu
end



-- fonction aiguillage pour les introduction
function p.entroduccion(data)
	local resu
	if (data["division"] == "canton") then
		resu = p.entro_canton(data)
	elseif (data["division"] == "arrondissement") then
		resu = p.entro_arrondissement(data)
	elseif (data["division"] == "dèpartament") then
		resu = p.entro_departament(data)
	elseif (data["division"] == "fraccion cantonâla") then
		resu = p.entro_fraccion(data)
	elseif (data["division"] == "règ·ion") then
		resu = p.entro_region(data)
	elseif (data["division"] == "payis") then
		resu = p.entro_payis(data)
	elseif (data["tipo"] == "comena") then
		-- toutes les communes traitées là, différenciation après
		resu = p.entro_comena(data)
	else
		return "<err>"
	end
	-- on ajoute la partie évolution de la population
	local txt = p.evolucion(data)
	if ((txt ~= nil) and (txt ~= "")) then
		resu = resu .. "\n\n" .. txt
	end
	return resu
end


return p