Module:Utilisateur:Ménestor/1
Apparence
La documentation de ce module est générée par le modèle {{Documentation module}}.
Les éditeurs peuvent travailler dans le bac à sable (créer).
Voir les statistiques d'appel depuis le wikicode sur l'outil wstat et les appels depuis d'autres modules.
-- MODULE DE TEST DE L'UTILISATEUR MÉNESTOR
-- Initialisation de la table principale du module
local p = {}
-- Chargement des données des préfectures et des circonscriptions
local data = mw.loadData('Module:Utilisateur:Ménestor/2')
-- Fonctions utilitaires
local function erreur(message)
return string.format('<strong class="error">%s</strong>', message)
end
local function obtenirDate()
local listeMois = {
[1] = "janvier", [2] = "février", [3] = "mars",
[4] = "avril", [5] = "mai", [6] = "juin",
[7] = "juillet", [8] = "août", [9] = "septembre",
[10] = "octobre", [11] = "novembre", [12] = "décembre",
}
local today = os.date('*t')
return today.day .. ' ' .. listeMois[today.month] .. ' ' .. today.year
end
-- Fonctions communes aux mises à jour des circonscriptions et des listes
local function obtenirPrefecture()
local titre = mw.title.getCurrentTitle().text
local prefecture = titre:match("de%s(%S+)$") or titre:match("d'(%S+)$")
return prefecture
end
local function colonnes()
local titre = mw.title.getCurrentTitle().text
if titre:find("Liste des députés", 1, true) then
return '! scope="col" | Circonscription\n! scope="col" colspan="2" | Député\n! scope="col" | Parti politique'
else
return '! scope="col" | [[Liste des législatures japonaises|Législature]]\n! scope="col" | Début de mandat\n! scope="col" | Fin de mandat\n! scope="col" | [[Député]] élu\n! scope="col" colspan="2" | [[Liste des partis politiques au Japon|Parti politique]]'
end
end
local function obtenirId(prefecture, id_type)
local alt = data.id[prefecture]
return alt[id_type]
end
local function nomPref(prefecture, id_nom)
local determinant = "la "
local nom_min = "préfecture "
local nom_maj = "Préfecture "
local base = "de " .. prefecture
if prefecture:match("^[AEIOŌ]") then
base = "d'" .. prefecture
end
local combinaison = {
["base"] = base,
["nmin"] = nom_min .. base,
["nmaj"] = nom_maj .. base,
["complet"] = determinant .. nom_min .. base,
}
return combinaison[id_nom]
end
-- Fonctions spécifiques à la mise à jour des circonscriptions
local function obtenirNumCirco()
local numeros = {
["première"] = 1,
["deuxième"] = 2,
["troisième"] = 3,
["quatrième"] = 4,
["cinquième"] = 5,
["sixième"] = 6,
["septième"] = 7,
["huitième"] = 8,
["neuvième"] = 9,
["dixième"] = 10,
["onzième"] = 11,
["douzième"] = 12,
["treizième"] = 13,
["quatorzième"] = 14,
["quinzième"] = 15,
["seizième"] = 16,
["dix-septième"] = 17,
["dix-huitième"] = 18,
["dix-neuvième"] = 19,
["vingtième"] = 20,
["vingt-et-unième"] = 21,
["vingt-deuxième"] = 22,
["vingt-troisième"] = 23,
["vingt-quatrième"] = 24,
["vingt-cinquième"] = 25,
["vingt-sixième"] = 26,
["vingt-septième"] = 27,
["vingt-huitième"] = 28,
["vingt-neuvième"] = 29,
["trentième"] = 30
}
local titre = mw.title.getCurrentTitle().text
local ordinal = titre:match("^(.-)%s+circonscription"):lower()
local numero = numeros[ordinal]
return numero
end
local function division(prefecture)
local debut = "|nom de division = Préfecture\n|division = [["
if prefecture == 'Tokyo' or prefecture == 'Hokkaidō' then
return debut .. prefecture .. "]]"
else
return debut .. nomPref(prefecture, 'nmaj') .. "|" .. prefecture .. "]]"
end
end
local function electorat(prefecture, num_circo, jma)
local circo = prefecture .. num_circo
local electeurs = data.pop[circo]
local debut = "|électeurs = "
local milieu = "<ref>{{Lien web|langue = ja|auteur institutionnel = [[Ministère des Affaires intérieures et des Communications]]|titre = 衆議院小選挙区別選挙人名簿及び在外選挙人名簿登録者数(選挙区順)|url = https://www.soumu.go.jp/main_content/000984242.xlsx|format = xls|site = soumu.go.jp|date = 24 décembre 2024|consulté le = "
local fin = "}}.</ref>\n|électeurs-année = 2024"
if electeurs then
return debut .. electeurs .. milieu .. jma .. fin
else
return erreur('Préfecture ou circonscription non reconnue')
end
end
local function refTableau(prefecture, jma)
local pref_kanji = obtenirId(prefecture, 'ja')
local num_pref = obtenirId(prefecture, 'num')
if pref_kanji and num_pref then
local debut = '<ref>{{Lien web|langue = ja|auteur = Taku Sugawara|titre = '
local milieu = 'の国会議員|url = https://kokkai.sugawarataku.net/giin/dmp'
local fin = '.html|site = kokkai.sugawarataku.net|consulté le = ' .. jma .. '}}.</ref>'
return debut .. pref_kanji .. milieu .. num_pref .. fin
else
return erreur('Préfecture non reconnue')
end
end
local function voirAussi(prefecture)
local debut = "* [[Liste des députés de "
if prefecture == 'Tokyo' then
return debut .. "Tokyo]]"
else
return debut .. nomPref(prefecture, 'complet') .. "]]"
end
end
-- Fonctions spécifiques à la mise à jour des listes
local function legislature(prefecture, num_legis, jma)
local num_pref = obtenirId(prefecture, 'num')
if num_pref then
if num_pref:match("^[0]") then
num_pref = mw.ustring.sub(num_pref, 2)
end
local debut49 = "== [[Élections législatives japonaises de 2021|{{49e}} législature]] (2021-2024) ==\nAu cours de la {{"
local debut50 = "== [[Élections législatives japonaises de 2024|{{50e}} législature]] (depuis 2024) ==\nAu cours de la {{"
local debut = (num_legis == "50" and debut50) or (num_legis == "49" and debut49) or "Au cours de la {{"
local inter1 = "e|législature}}, les députés de "
local nom_pref = nomPref(prefecture, 'complet')
if prefecture == 'Tokyo' then
nom_pref = 'Tokyo'
end
local verbe = num_legis == "50" and " sont " or " furent "
local inter2 = "les suivants<ref>{{Lien web|langue = ja|auteur = Taku Sugawara|titre = "
local inter3 = "期衆議院議員一覧(選挙区順)|url = https://kokkai.sugawarataku.net/giin/erl0"
local inter4 = ".html#s"
local inter5 = "|site = kokkai.sugawarataku.net|consulté le = "
local fin = "}}.</ref> :"
return debut .. num_legis .. inter1 .. nom_pref .. verbe .. inter2 .. num_legis .. inter3 .. num_legis .. inter4 .. num_pref .. inter5 .. jma .. fin
else
return erreur('Préfecture non reconnue')
end
end
local function annexes(prefecture)
local pref_kanji = obtenirId(prefecture, 'ja')
local num_pref = obtenirId(prefecture, 'num')
if pref_kanji and num_pref then
local debut = [=[== Notes et références ==
{{Références}}
== Voir aussi ==
=== Articles connexes ===]=]
local inter0a = ''
local inter0b = "\n* [[Circonscription électorale "
local inter1a = "]]\n\n"
local inter1b = [=[=== Liens externes ===
* {{Lien web|langue = ja|auteur = Taku Sugawara|titre = ]=]
local inter2a = "の国会議員|traduction titre = Membres de la Diète de "
local nom_pref = nomPref(prefecture, 'complet')
if prefecture == "Tokyo" or prefecture == "Hokkaidō" then
nom_pref = prefecture
end
local inter3 = "|url = https://kokkai.sugawarataku.net/giin/dmp"
local fin = ".html|site = kokkai.sugawarataku.net}}."
if data.pr[prefecture] then
inter0a = "\n* [[" .. data.pr[prefecture] .. "]]"
end
return debut .. inter0a .. inter0b .. nomPref(prefecture, 'base') .. inter1a .. inter1b .. pref_kanji .. inter2a .. nom_pref .. inter3 .. num_pref .. fin
else
return erreur('Préfecture non reconnue')
end
end
-- Fonction principale
function p.maj(frame)
local pframe = frame:getParent()
local args = pframe.args
local section = args[1]
if section == "c" then
return colonnes()
elseif section == "d" then
local prefecture = obtenirPrefecture()
return division(prefecture)
elseif section == "e" then
local prefecture = obtenirPrefecture()
local num_circo = obtenirNumCirco()
local jma = obtenirDate()
return electorat(prefecture, num_circo, jma)
elseif section == "i" then
return "trente [[circonscriptions législatives du Japon|circonscriptions législatives]]"
elseif section == "l" then
if args[2] then
local prefecture = obtenirPrefecture()
local jma = obtenirDate()
return legislature(prefecture, args[2], jma)
else
return erreur('N° de législature manquant')
end
elseif section == "m" then
return '! scope="col" | Circonscription\n! scope="col" colspan="2" | Député\n! scope="col" | Parti politique\n! scope="col" | Mandat'
elseif section == "t" then
local prefecture = obtenirPrefecture()
local jma = obtenirDate()
return refTableau(prefecture, jma)
elseif section == "v" then
local prefecture = obtenirPrefecture()
return voirAussi(prefecture)
elseif section == "w" then
return '|largeur=1px'
elseif section == "x" then
local prefecture = obtenirPrefecture()
return annexes(prefecture)
else
return erreur('Code de section manquant ou inconnu')
end
end
return p