Aller au contenu

Module:Population de France/Introductions

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 30 décembre 2017 à 15:10 et modifiée en dernier par Od1n (discuter | contributions) (pas tout compris, mais ça demande à Module:Population de France/Données de charger Module:Données/France/évolution population‏‎ qui n'existe pas… et donc ça produisait 34 224 inclusions en lien rouge). 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

Fonctions créant le texte des introductions pour les différentes entités.

La fonction principale est :

  • p.introduction(data) : retourne un texte correspondant à l'introduction, pour l'entité dont les données sont dans data

Les autres fonctions ne sont pas destinées à être appelées directement et sont utilisées par cette fonction.

--[[
  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:Population de France/Outils")
p.donnees = require("Module:Population de France/Données")
p.constantes = require("Module:Population de France/Constantes")


-- textes, "constantes", mis en variables pouralléger le code
p.intro_debut = [=[
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.C3.A9nov.C3.A9_en_France_.28depuis_2004.29|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.intro_petite = [=[
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.intro_petite2 = [=[
Pour la commune, le premier recensement exhaustif entrant dans le cadre du nouveau dispositif a été réalisé en ]=]

-- idem, pour commune > 10000
p.intro_grande = [=[
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.intro_note = [=[
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.intro_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.C3.A9nov.C3.A9_en_France_.28depuis_2004.29|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.intro_poly = [=[
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.intro_canton(data)
	return ""
end
-- dédié introduction arrondissement
function p.intro_arrondissement(data)
	return ""
end
-- dédié introduction fractions
function p.intro_fraction(data)
	return ""
end
-- dédié introduction departement
function p.intro_departement(data)
	return ""
end
-- dédié introduction région
function p.intro_region(data)
	return ""
end
-- dédié introduction pays
function p.intro_pays(data)
	return ""
end


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

-- partie +10000
function p.intro_p1k(data)
	local resu = p.intro_grande
	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 = 'Note' },
				content = p.intro_note } .. "."
	return resu
end

-- partie -10000
function p.intro_m1k(data)
	local resu = p.intro_petite
	-- 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["source_collecte"] ~= nil)) then
		resu = resu .. " " .. p.intro_petite2 .. data["recens-prem"]
		resu = resu .. mw.getCurrentFrame():extensionTag{ name = "ref",
			    content = "[" .. data["source_collecte"] .. " Calendrier départemental des recensements], sur [http://insee.fr/ le site de l'Insee]" } .. "."
	end
	return resu
end


-- par type de commune
function p.intro_c_base(data, sup1k)
	local resu = p.intro_ccc(data, p.intro_debut)
	if (not sup1k) then
		resu = resu .. p.intro_m1k(data)
	else
		resu = resu .. p.intro_p1k(data)
	end
	return resu
end
function p.intro_c_drom(data, sup1k)
	local resu = p.intro_ccc(data, p.intro_drom)
	if (not sup1k) then
		resu = resu .. p.intro_m1k(data)
	else
		resu = resu .. p.intro_p1k(data)
	end
	return resu
end
function p.intro_c_com1(data, sup1k)
	local resu = p.intro_poly
	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.intro_c_com2(data, sup1k)
	local resu = p.intro_poly
	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.liste_annees_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.intro_c_nouv(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.intro_commune(data)
	local resu
	
	-- selon la population (< ou > 10000 habitants)
	local sup1k = false
	if (data["recens-prem"] == "annuel") then
		sup1k = true
	end
	
	if (data["division"] == "commune") then
		resu = p.intro_c_base(data, sup1k);
	elseif (data["division"] == "commune en DROM") then
		resu = p.intro_c_drom(data, sup1k);
	elseif (data["division"] == "commune en COM1") then
		resu = p.intro_c_com1(data, sup1k);
	elseif (data["division"] == "commune en COM2") then
		resu = p.intro_c_com2(data, sup1k);
	elseif (data["division"] == "commune nouvelle") then
		resu = p.intro_c_nouv(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.evolution(data)
	local resu = ""
	-- dernière partie : chiffres, comparatifs…
	resu = resu .. "En " .. data["dernier"] .. ", "
	if (data["division"] == "canton") then
		resu = resu .. "le canton comptait "
	elseif (data["division"] == "arrondissement") then
		resu = resu .. "l'arrondissement comptait "
	elseif (data["division"] == "département") then
		resu = resu .. "le département comptait "
	elseif (data["division"] == "région") then
		resu = resu .. "la région comptait "
	elseif (data["division"] == "pays") then
		resu = resu .. "le pays comptait "
	else -- commune
		resu = resu .. "la commune comptait "
	end
	resu = resu .. mw.language.getContentLanguage():formatNum(data[data["dernier"]]["pop"]) .. " habitants"
	-- 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["dernier"]+3 ..
				", millésimée " .. data["dernier"] .. ", définie dans les limites territoriales en vigueur au 1<sup>er</sup>&nbsp;janvier&nbsp;" .. data["dernier"]+2 ..
				", date de référence statistique : 1<sup>er</sup>&nbsp;janvier&nbsp;" .. data["dernier"]..".", args = { group = "Note" } }
	-- calcul de l'augmentation / diminution
	local delta = p.donnees.variation_texte(data)
	if (delta ~= nil) then
		resu = resu .. ", " .. delta
		-- seulement si on a une variation
		-- département associé (sauf pour les départements)
		local nomd = data["nom-dep"] -- on en a besoin plus tard
		data, wlm = p.donnees.charge_donnees(nomd)
		local deltad = nil
		local nomdwp = nil
		if ((data ~= nil) and (wlm == true)) then
			nomdwp = data["nom-wp"]
			deltad = p.donnees.variation(data, false)
		end
		-- France
		local deltaf = nil
		-- 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.introduction(data)
	local resu
	if (data["division"] == "canton") then
		resu = p.intro_canton(data)
	elseif (data["division"] == "arrondissement") then
		resu = p.intro_arrondissement(data)
	elseif (data["division"] == "département") then
		resu = p.intro_departement(data)
	elseif (data["division"] == "fraction cantonale") then
		resu = p.intro_fraction(data)
	elseif (data["division"] == "région") then
		resu = p.intro_region(data)
	elseif (data["division"] == "pays") then
		resu = p.intro_pays(data)
	elseif (data["type"] == "commune") then
		-- toutes les communes traitées là, différenciation après
		resu = p.intro_commune(data)
	else
		return "<err>"
	end
	-- on ajoute la partie évolution de la population
	local txt = p.evolution(data)
	if ((txt ~= nil) and (txt ~= "")) then
		resu = resu .. "\n\n" .. txt
	end
	return resu
end


return p