Aller au contenu

Module:Nom dynastique

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 20 août 2017 à 20:17 et modifiée en dernier par Rehtse (discuter | contributions) (Création). 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]

Ce module est utilisé par les modèles {{Souverain2}}, {{Souverain3}} et {{Souverain-}}.

Utilisation

Fonctions exportables :

  • fonction(frame) – description (courte description de fonction(frame) et autres informations pertinentes).
  • fonction2() – description2 (courte description de fonction2() et autres informations pertinentes).

Autres fonctions :

  • fonction() – description2 (courte description de fonction() 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.



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.."&nbsp;"..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