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 25 janvier 2017 à 22:26 et modifiée en dernier par Hexasoft (discuter | contributions) (transfert). Elle peut contenir des erreurs, des inexactitudes ou des contenus vandalisés non présents dans la version actuelle.
(diff) ← Version précédente | Voir la version actuelle (diff) | Version suivante → (diff)

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


-- 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 : {{Date-|1er|janvier|2014}}.", 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
		data, wlm = p.donnees.charge_donnees("France")
		local deltaf = nil
		if ((data ~= nil) and (wlm == true)) then
			deltaf = p.donnees.variation(data, 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.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