模組:Population de France/Introductions
外观
--[[
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")
local frame = mw.getCurrentFrame()
local lang = mw.language.getContentLanguage()
local function ajoutref(text, args)
return frame:extensionTag("ref", text, args)
end
-- 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é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.intro_petite = [=[
Pour les communes de moins de 10 000 habitants, une enquête de recensement portant sur toute la population est réalisée tous les cinq 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 = [=[
对于人口数超过10,000的市镇,人口普查是每年在对8%的住宅地址样本抽样调查后进行的,这与其他每五年进行一次真正人口普查的市镇不同]=]
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 000 habitants, et que les populations des années 2006, 2011, 2016, etc. pour les communes de plus de 10 000 habitants, ainsi que la dernière population légale publiée par l’Insee pour l'ensemble des communes. ]=]
p.intro_drom = [=[
通过%d年以来在该市镇进行的[[人口普查]](该年人口普查为1946年省级行政区划调整后的第一次人口普查),可以得知居民人数的变化情况。从2006年起,[[法国国家统计与经济研究所|INSEE]]每年都会公布各市镇的法定人口,此后的人口普查基于每年收集的信息。]=]
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
local ref = "[https://www.insee.fr/fr/information/2383265 L'organisation du recensement], sur [[Institut national de la statistique et des études économiques|insee.fr]]."
local note = p.intro_note
-- la note
return resu .. ajoutref(ref, { name = "insee_orga_rec" }) .. "<sup class=\"reference cite_virgule\">,</sup>" .. ajoutref(note, { group = 'Note' })
end
-- partie -10000
function p.intro_m1k(data)
local resu = p.intro_petite
-- partie de "petit" qui nécessite calcul et traitements
local ref = "[https://www.insee.fr/fr/information/2383265 L'organisation du recensement], sur [[Institut national de la statistique et des études économiques|insee.fr]]."
resu = resu .. ajoutref(ref, { name = "insee_orga_rec" }) .. "."
if ((data["recens-prem"] ~= nil)) then
resu = resu .. " " .. p.intro_petite2 .. data["recens-prem"]
ref = "[https://www.insee.fr/fr/information/2383410 Calendrier départemental des recensements], sur [[Institut national de la statistique et des études économiques|insee.fr]]."
resu = resu .. ajoutref(ref) .. "."
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
local ref = "[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é]"
ref = resu .. ajoutref(ref, { name = "LF_2002-276_T-V" }) .. "."
return resu
end
function p.intro_c_com2(data, sup1k)
local resu = p.intro_poly
local ref = "[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é]"
resu = resu .. ajoutref(ref, { name = "LF_2002-276_T-V" }) .. "."
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
local fonctions = { -- liste des fonctions d'affichage chaque type de commune
["commune"] = p.intro_c_base,
["commune en DROM"] = p.intro_c_drom,
["commune en COM1"] = p.intro_c_com1,
["commune en COM2"] = p.intro_c_com2,
["commune nouvelle"] = p.intro_c_nouv
}
local fun = fonctions[data["division"]] --
if (not fun) then
return "" -- c'est une erreur mais on ne devrait jamais être ici avec une division non gérée
end
resu = fun(data, sup1k)
return resu
end
-- partie évolution de population
function p.evolution(data)
local resu = "En $annee, $div comptait $pop habitants$note"
local divtext = {
["canton"] = "le canton",
["arrondissement"] = "l'arrondissement",
["département"] = "le département",
["région"] = "la région",
["pays"] = "le pays",
["default"] = "la commune"
}
if (data["nom"] == "Métropole de Lyon") then
divtext = {
["département"] = "la métropole",
}
end
if (data["nom"] == "Paris") then
divtext = {
["département"] = "Paris",
}
end
local annee = data["dernier"]
local div = data["division"]
div = divtext[div] or divtext.default
local pop = data[data["dernier"]]["pop"]
pop = lang:formatNum(data[data["dernier"]]["pop"])
local note = "Population municipale légale en vigueur au 1<sup>er</sup> janvier " .. annee+3 ..
", millésimée $annee, définie dans les limites territoriales en vigueur au 1<sup>er</sup> janvier " .. annee+2 ..
", date de référence statistique : 1<sup>er</sup> janvier $annee."
local note_name = "Pop_mun_" .. annee
if (data["nom-dep"] == "Mayotte") then -- Mayotte a un système de recensement différent
note = "Population municipale légale en vigueur au 1<sup>er</sup> janvier " .. annee+1 ..
", millésimée $annee, définie dans les limites territoriales en vigueur au 1<sup>er</sup> janvier " .. annee ..
", date de référence statistique : 1<sup>er</sup> janvier $annee."
end
note = mw.ustring.gsub(note, "$annee", annee)
note = ajoutref(note, { group = "Note", name = note_name })
resu = mw.ustring.gsub(resu, "$note", note)
resu = mw.ustring.gsub(resu, "$div", div)
resu = mw.ustring.gsub(resu, "$pop", pop)
resu = mw.ustring.gsub(resu, "$annee", annee)
-- 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.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 loadedData, wlm = p.donnees.charge_donnees(data["nom-dep"])
local deltad = nil
local nomdwp = nil
if ((loadedData ~= nil) and (wlm == true)) then
nomdwp = loadedData["nom-wp"]
deltad = p.donnees.variation(loadedData, false)
end
-- France
loadedData, wlm = p.donnees.charge_donnees("France")
local deltaf = nil
if (loadedData ~= nil) then -- pour la France on ne teste que la présence des données
deltaf = p.donnees.variation(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 .. " : +" .. lang:formatNum(deltad) .. " %"
else
resu = resu .. nomdwp .. " : " .. lang: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]] : +" .. lang:formatNum(deltaf) .. " %"
else
resu = resu .. "[[Démographie de la France|France]] hors [[Mayotte]] : " .. lang: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
local fonctions = { -- fonctions à utiliser pour chaque type de division
["canton"] = p.intro_canton,
["arrondissement"] = p.intro_arrondissement,
["département"] = p.intro_departement,
["fraction cantonale"] = p.intro_fraction,
["région"] = intro_region,
["pays"] = p.intro_pays,
["commune"] = p.intro_commune -- toutes les communes traitées là, différenciation après
}
local divfun = fonctions[data["division"]]
if (not divfun) and (data["type"] == "commune") then
divfun = fonctions["commune"]
end
if not divfun then
return "<err>"
end
local resu = divfun (data)
-- 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