Module:Nom dynastique
Apparence
[voir] [modifier] [historique] [purger]
Ce module est utilisé par les modèles {{Souverain2}}, {{Souverain3}} et {{Souverain-}}.
Utilisation
Fonctions exportables :
fonction(frame)
– description (courte description defonction(frame)
et autres informations pertinentes).fonction2()
– description2 (courte description defonction2()
et autres informations pertinentes).
Autres fonctions :
fonction()
– description2 (courte description defonction()
et autres informations pertinentes).
Modules externes et autres éléments dont ce module a besoin pour fonctionner :
mw.title
– description (courte description expliquant la dépendance de ce module externe).
Exemples
Pour des exemples, voir la page de test permettant de tester diverses modifications apportées.
La documentation de ce module est générée par le modèle {{Documentation module}}.
Elle est incluse depuis sa sous-page de documentation. Veuillez placer les catégories sur cette page-là.
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.
local dyn = {}
local Outils = require( 'Module:Outils' )
local trim = Outils.trim
-- liste des chiffres romains pour conversion
local listeRomains = { ["Ier"] = "1",
["II"] = "2",
["III"] = "3",
["IV"] = "4",
["V"] = "5",
["VI"] = "6",
["VII"] = "7",
["VIII"] = "8",
["IX"] = "9",
["X"] = "10",
["XI"] = "11",
["XII"] = "12",
["XIII"] = "13",
["XIV"] = "14",
["XV"] = "15",
["XVI"] = "16",
["XVII"] = "17",
["XVIII"] = "18",
["XIX"] = "19",
["XX"] = "20",
["XXI"] = "21",
["XXII"] = "22",
["XXIII"] = "23",
["XXIV"] = "24"}
-- Conversio nombre en chiffres romains => nombre en chiffres arabes pour l'infobulle
function dyn.romains(frame)
local romain = frame.args[1]
return listeRomains[romain]
end
local args = Outils.extractArgs( frame )
local a1, a2, a3, a4 = "", "", "", ""
local a1, a2, a3, a4 = args[1] or "", args[2] or "", args[3] or "", args[4] or ""
local a1, a2, a3, a4 ="Louis XIV, roi de France", "", "", ""
--local a1, a2, a3, a4 ="Clovis", "Ier", "", ", le Grand"
--local a1, a2, a3, a4 ="Charles", "VIII", "(roi de France)", ", le Niais"
--local a1, a2, a3, a4 ="Charles VIII (roi de France)", ", le Niais", "", ""
--local a1, a2, a3, a4 ="Charles V le Sage", "", "", ""
--local a1, a2 = "CharlesXII", ""
local typenom = '[a-zA-ZÇÉÈŒéèàùâêîôûëïöüçæœ%-]+'
local typeromains = '[IVXLCDMer]+'
local lien = ""
local complement = ""
local nom = ""
local quantieme = ""
local extension = ""
-- Si le deuxième paramètre est un nombre en chiffres romains, on est dans le cas de :
-- {{Souverain|Louis|XIV|(roi de France)|, le Roi Soleil}} et similaires
if a2 == string.match(a2, typeromains)
then
nom=a1
quantieme=a2
if a3 then complement=a3 end
if a4 then extension=a4 end
lien= nom.." "..quantieme.." "..complement
else
-- Si le deuxième paramètre est un nombre en chiffres romains, on est dans le cas de :
--{{Souverain|Louis XIV (roi de France)|, le Roi Soleil}} et similaires
nom = string.match( a1, typenom, 1)
quantieme = string.match(a1, typeromains, string.len(nom)+2)
complement = string.sub(a1, string.len(nom..quantieme)+2)
complement= trim(complement)
lien=a1
extension=a2
end
-- Mise en forme de la typographie, l'infobulle et l'éventuel exposant
local test1="non"
if string.len(quantieme) > 2
then
test1=string.reverse(quantieme)
test1 = string.sub(test1, 1, 2)
test1=string.reverse(test1)
end
local infobulle=""
local abbr=""
if test1=="re"
then
quantieme="Ire"
infobulle="première"
abbr="I<sup>re</sup>"
else
if test1=="er"
then
quantieme="Ier"
infobulle="premier"
abbr="I<sup>er</sup>"
else
quantieme=string.upper(quantieme)
infobulle=listeRomains[quantieme]
abbr=quantieme
end
end
local quantiemeaffiche = '<abbr class="abbr" title="'..infobulle..'>'..abbr..'</abbr>'
-- Fonction de mise en forme du lien à afficher
function dyn.ecriturelien ()
local texte1=""
local extension2=""
-- si l'extension ("", le Roi Soleil" dans le cas de Louis XIV) commence par une virgule, on ne met pas d'espace avant,
-- mais on vérifie qu'il y a bien une espace entre la virgule et le mot suivant
-- si l'extension ne commence pas par une virgule, on place une espace avant l'extension
if string.sub(extension, 1, 1) == ","
then
if string.sub(extension, 2, 1) == " "
then
extension2=extension
else
local longueur=string.len(extension)
extension2=", "..string.sub(extension, 2)
end
else
extension2 = " "..extension
end
texte1 = "[["..nom.." "..quantieme.." "..complement.."|"..nom.." "..quantiemeaffiche
if extension2 then texte1 = texte1..extension2 end
texte1 = texte1.."]]"
return texte1
end
local texte=""
-- Affichage dans le cas où le lien est de la forme [[Charles V le Sage|{{nobr|Charles V}} le Sage]]
-- correspond au modèle Souverain3, ce qui permet d'écrire :
-- {{Souverain3|Charles V le Sage}}
-- plutôt que:
-- {{Charles V le Sage|le Sage}}
function dyn.lien_affiche(frame)
if string.sub(complement, 1, 1) == ","
then
extension = complement
else
extension = " "..complement
end
texte=dyn.ecriturelien ()
return texte
end
-- Affichage dans le cas général
function dyn.affiche (frame)
texte=dyn.ecriturelien ()
return texte
end
return dyn