<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="fr">
	<id>https://wicri-demo.istex.fr/Wicri/Europe/ChansonRoland/fr/index.php?action=history&amp;feed=atom&amp;title=Module%3ANoble</id>
	<title>Module:Noble - Historique des versions</title>
	<link rel="self" type="application/atom+xml" href="https://wicri-demo.istex.fr/Wicri/Europe/ChansonRoland/fr/index.php?action=history&amp;feed=atom&amp;title=Module%3ANoble"/>
	<link rel="alternate" type="text/html" href="https://wicri-demo.istex.fr/Wicri/Europe/ChansonRoland/fr/index.php?title=Module:Noble&amp;action=history"/>
	<updated>2026-04-27T12:05:57Z</updated>
	<subtitle>Historique des versions pour cette page sur le wiki</subtitle>
	<generator>MediaWiki 1.31.10</generator>
	<entry>
		<id>https://wicri-demo.istex.fr/Wicri/Europe/ChansonRoland/fr/index.php?title=Module:Noble&amp;diff=39355&amp;oldid=prev</id>
		<title>Jacques Ducloy : Page créée avec « local p = {} local Romains = require('Module:Chiffres romains')  --[[ 	Traitement d'une erreur. 	Argument:	message d'erreur en texte simple 	Résultat:	la fonction ne reto... »</title>
		<link rel="alternate" type="text/html" href="https://wicri-demo.istex.fr/Wicri/Europe/ChansonRoland/fr/index.php?title=Module:Noble&amp;diff=39355&amp;oldid=prev"/>
		<updated>2023-03-15T21:00:44Z</updated>

		<summary type="html">&lt;p&gt;Page créée avec « local p = {} local Romains = require(&amp;#039;Module:Chiffres romains&amp;#039;)  --[[ 	Traitement d&amp;#039;une erreur. 	Argument:	message d&amp;#039;erreur en texte simple 	Résultat:	la fonction ne reto... »&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Nouvelle page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;local p = {}&lt;br /&gt;
local Romains = require('Module:Chiffres romains')&lt;br /&gt;
&lt;br /&gt;
--[[&lt;br /&gt;
	Traitement d'une erreur.&lt;br /&gt;
	Argument:	message d'erreur en texte simple&lt;br /&gt;
	Résultat:	la fonction ne retourne pas à l'appelant, mais après le pcall()&lt;br /&gt;
	&lt;br /&gt;
	Lorsqu'une erreur est détectée, par exemple un argument invalide dans&lt;br /&gt;
	l'appel du modèle, cette fonction est appelée. Elle termine tous les appels&lt;br /&gt;
	de fonction, jusqu'à atteindre un appel à la fonction pcall(), qui retourne&lt;br /&gt;
	false et le message (s'il n'y avait pas eu d'erreur dans le traitement,&lt;br /&gt;
	pcall retournait true et les valeurs retournées par la fonction qu'on lui&lt;br /&gt;
	passe en premier argument).&lt;br /&gt;
	&lt;br /&gt;
	Cette méthode a l'intérêt de rendre le code nettement plus lisible en ne&lt;br /&gt;
	traînant pas partout des codes et des messages d'erreur, et accessoirement&lt;br /&gt;
	de gagner un brin de performance.&lt;br /&gt;
	&lt;br /&gt;
	Dans ce module, la fonction erreur() peut être appelée à peu près n'importe&lt;br /&gt;
	quand. Voir les fonctions p.Noble() et p.Noble_() pour l'utilisation de&lt;br /&gt;
	pcall().&lt;br /&gt;
	]]&lt;br /&gt;
local function erreur		(msg)		&lt;br /&gt;
	if string.sub(msg, 1, 5) ~= '&amp;lt;span' then&lt;br /&gt;
		-- Romains.conversion() inclut déjà le &amp;lt;span&amp;gt;&lt;br /&gt;
		msg = '&amp;lt;span class=&amp;quot;error&amp;quot;&amp;gt;' .. msg .. '&amp;lt;/span&amp;gt;'&lt;br /&gt;
	end&lt;br /&gt;
	error(msg, 0)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--[[&lt;br /&gt;
	Génération d'un &amp;lt;span&amp;gt; enrobant un nombre romain.&lt;br /&gt;
	Argument:	chaîne avec des chiffres romains majuscules&lt;br /&gt;
	Résultat:	la même chaîne enrobée dans un &amp;lt;span&amp;gt; avec le bon style&lt;br /&gt;
	]]&lt;br /&gt;
local function html_romain	(chaine)	&lt;br /&gt;
	return	'&amp;lt;span class=&amp;quot;romain&amp;quot; style=&amp;quot;text-transform:uppercase&amp;quot;&amp;gt;'&lt;br /&gt;
			.. chaine&lt;br /&gt;
			.. '&amp;lt;/span&amp;gt;'&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--[[&lt;br /&gt;
	Génération d'un &amp;lt;abbr&amp;gt; avec l'infobulle, le nombre romain et un exposant&lt;br /&gt;
	éventuel.&lt;br /&gt;
	Arguments:	infobulle	à afficher&lt;br /&gt;
				nombre		en chiffres romains majuscules uniquement&lt;br /&gt;
				exposant	peut être 'er', 're', '' (chaîne vide)&lt;br /&gt;
	Résultat:	les arguments enrobés dans un &amp;lt;abbr&amp;gt;&lt;br /&gt;
	]]&lt;br /&gt;
local function html_abbr	(infobulle, nombre, exposant)	&lt;br /&gt;
	return	'&amp;lt;abbr class=&amp;quot;abbr&amp;quot; title=&amp;quot;' .. infobulle .. '&amp;quot; &amp;gt;'&lt;br /&gt;
			.. html_romain(nombre) .. exposant .. '&amp;lt;/abbr&amp;gt;'&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--[[&lt;br /&gt;
	Génération d'un nombre romain à afficher.&lt;br /&gt;
	Argument:	la chaîne avec uniquement les caractères &amp;quot;IVXLCDMer&amp;quot;&lt;br /&gt;
	Résultat:	le HTML pour afficher le nombre romain, ou&lt;br /&gt;
				nil si la chaîne doit être ignorée&lt;br /&gt;
	Notes:&lt;br /&gt;
	-	Si un argument valide comme 'Ier', 'Ire', 'XIV' est fourni, retourne le&lt;br /&gt;
		HTML.&lt;br /&gt;
	-	Si un argument invalide comme 'Le' ou 'Veere' est fourni, retourne nil.&lt;br /&gt;
		Dans ce case, l'analyseur doit essayer de trouver un nombre plus loin.&lt;br /&gt;
	-	Si un argument avec on nombre romain clairement invalide comme 'VV' est&lt;br /&gt;
		fourni, une erreur est causée.&lt;br /&gt;
	]]&lt;br /&gt;
local function romain		(chaine)	&lt;br /&gt;
	if chaine == &amp;quot;Ier&amp;quot; then return html_abbr('premier',  'I', '&amp;lt;sup&amp;gt;er&amp;lt;/sup&amp;gt;') end&lt;br /&gt;
	if chaine == &amp;quot;Ire&amp;quot; then return html_abbr('première', 'I', '&amp;lt;sup&amp;gt;re&amp;lt;/sup&amp;gt;') end&lt;br /&gt;
	if string.find(chaine, 'e', 1, true) then return nil end&lt;br /&gt;
	if string.find(chaine, 'r', 1, true) then return nil end&lt;br /&gt;
	local test, msg, infobulle = Romains.conversion(chaine)&lt;br /&gt;
	if not test then erreur(msg) end&lt;br /&gt;
	return html_abbr(infobulle, chaine, '')&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--[[&lt;br /&gt;
	Formatage d'une chaîne. Une homonymie entre parenthèses est conservée.&lt;br /&gt;
	Argument:	chaîne à formater&lt;br /&gt;
	Résultat:	texte, complement&lt;br /&gt;
		texte:		nom et numéro formatés, par exemple Louis II, avec mise en&lt;br /&gt;
					forme; vide si pas de numéro&lt;br /&gt;
		complement:	le complément de nom, par exemple de Bavière (1229-1294)&lt;br /&gt;
		&lt;br /&gt;
	La recherche de patterns en unicode est relativement coûteuse, donc on essaie&lt;br /&gt;
	de ne pas multiplier les recherches: on ratisse large et on trie après. Comme&lt;br /&gt;
	il peut y avoir plusieurs nombres en chiffres romains dans la chaîne, on&lt;br /&gt;
	utilise une boucle pour les trouver un par un et on accumule le texte formaté&lt;br /&gt;
	au fur et à mesure.&lt;br /&gt;
	&lt;br /&gt;
	La fonction utilise les variables suivantes:&lt;br /&gt;
	sujet:	la chaîne à formater, à laquelle on a ajouté une espace au début et&lt;br /&gt;
			à la fin parce que mw.ustring.find() a besoin d'un caractère avant&lt;br /&gt;
			et après les chiffres romains, pour détecter un nombre romain dans&lt;br /&gt;
			un mot isolé, et ne pas détecter le D dans Désirée.&lt;br /&gt;
	texte:	accumule le texte analysé jusqu'ici; soit vide, soit se terminant par&lt;br /&gt;
			un nombre romain formaté. Peut contenir plusieurs fois des nombres&lt;br /&gt;
			romains.&lt;br /&gt;
	index:	index dans le sujet du premier caractère qui n'a pas encore été&lt;br /&gt;
			copié dans la variable texte.&lt;br /&gt;
			Exprimé en caractères, pas en bytes.&lt;br /&gt;
	init:	position où débuter la recherche de pattern. Souvent identique à&lt;br /&gt;
			index, mais pourrait en différer. Par exemple avec le sujet &amp;quot; Louis&lt;br /&gt;
			de Veere Ier &amp;quot; le pattern trouvera d'abord &amp;quot;Veere&amp;quot; mais&lt;br /&gt;
			romain(capture) retournera nil, et donc texte restera inchangé&lt;br /&gt;
			(vide), index aussi (2) mais init indiquera le premier caractère&lt;br /&gt;
			après &amp;quot;Veere&amp;quot; (16).&lt;br /&gt;
			Exprimé en caractères, pas en bytes.&lt;br /&gt;
	&lt;br /&gt;
	Cette fonction est le coeur du module, à ne modifier qu'avec d'infinies&lt;br /&gt;
	précautions !&lt;br /&gt;
	]]&lt;br /&gt;
local function formatage2	(chaine)	&lt;br /&gt;
	local sujet = ' ' .. chaine .. ' '	-- la chaîne à formater&lt;br /&gt;
	local texte = ''			-- accumule le texte formaté&lt;br /&gt;
	local index = 2				-- premier caractère de sujet non copié dans texte&lt;br /&gt;
	local init  = 1				-- position où démarrer la recherche de pattern&lt;br /&gt;
	while true do&lt;br /&gt;
		local debut, fin, capture&lt;br /&gt;
			  = mw.ustring.find(sujet, '%W([IVXLCDM]+[er]*)%W', init)&lt;br /&gt;
		if not debut then					-- plus aucun nombre romain&lt;br /&gt;
			return texte, mw.ustring.sub(sujet, index, -2)&lt;br /&gt;
		end&lt;br /&gt;
		capture = romain(capture)			-- formate le nombre romain&lt;br /&gt;
		if capture then						-- accumuler avec le nombre romain&lt;br /&gt;
			texte = texte .. mw.ustring.sub(sujet, index, debut)&lt;br /&gt;
			if string.sub(texte, -1) == ' ' then				-- Louis XIV&lt;br /&gt;
				texte = string.sub(texte, 1, -2) .. '&amp;amp;nbsp;'&lt;br /&gt;
			elseif string.sub(texte, -2) == ' (' then			-- Louis (XIV)&lt;br /&gt;
				texte = string.sub(texte, 1, -3) .. '&amp;amp;nbsp;('&lt;br /&gt;
			elseif string.sub(texte, -2) == ' [' then			-- Louis [XIV]&lt;br /&gt;
				texte = string.sub(texte, 1, -3) .. '&amp;amp;nbsp;['&lt;br /&gt;
			end&lt;br /&gt;
			texte = texte .. capture&lt;br /&gt;
			index = fin&lt;br /&gt;
			init  = fin						-- .. et chercher le suivant&lt;br /&gt;
		else								-- fausse alerte, par exemple 'Veere'&lt;br /&gt;
			init = fin&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--[[&lt;br /&gt;
	Formatage d'une chaîne. Une homonymie entre parenthèses est ignorée.&lt;br /&gt;
	Argument:	chaîne à formater&lt;br /&gt;
	Résultat:	texte, complement&lt;br /&gt;
		texte:		nom et numéro formatés, par exemple Louis II, avec mise en&lt;br /&gt;
					forme; vide si pas de numéro&lt;br /&gt;
		complement:	le complément de nom, par exemple de Bavière&lt;br /&gt;
	&lt;br /&gt;
	Pour l'instant, l'homonymie est défini comme le texte à partir de la dernière&lt;br /&gt;
	parenthèse ouvrante, pourvu que le dernier caractère de la chaîne soit une&lt;br /&gt;
	parenthèse fermante. Une définition plutôt rudimentaire, qui devrait&lt;br /&gt;
	probablement être affinée avec l'expérience.&lt;br /&gt;
	]]&lt;br /&gt;
local function formatage1	(chaine)	&lt;br /&gt;
	if string.sub(chaine, -1, -1) ~= &amp;quot;)&amp;quot; then&lt;br /&gt;
		return formatage2(chaine)&lt;br /&gt;
	end&lt;br /&gt;
	local paren = 0		-- position de la dernière parenthèse ouvrante&lt;br /&gt;
	local teste			-- dernier index testé&lt;br /&gt;
	repeat&lt;br /&gt;
		teste = string.find(chaine, &amp;quot;(&amp;quot;, paren + 1, true)&lt;br /&gt;
		if teste then paren = teste end&lt;br /&gt;
	until teste == nil&lt;br /&gt;
	if paren == 0 then return formatage2(chaine)&lt;br /&gt;
	              else return formatage2(string.sub(chaine, 1, paren - 1))&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--[[&lt;br /&gt;
	Formatage du texte à afficher.&lt;br /&gt;
	Arguments:	arg1, arg2, arg3&lt;br /&gt;
		arg1:	premier argument reçu de l'appel du modèle&lt;br /&gt;
		arg2:	deuxième argument reçu de l'appel du modèle&lt;br /&gt;
		arg3:	troisième argument reçu de l'appel du modèle&lt;br /&gt;
	Résultat:	texte à afficher&lt;br /&gt;
	]]&lt;br /&gt;
local function affichage	(arg1, arg2, arg3)&lt;br /&gt;
	local texte, reste = &amp;quot;&amp;quot;, &amp;quot;&amp;quot;&lt;br /&gt;
	if not arg2 or arg2 == &amp;quot;*&amp;quot; then&lt;br /&gt;
		-- second argument absent: on formate le premier argument&lt;br /&gt;
		-- avec le complément&lt;br /&gt;
		texte, reste = formatage1(arg1)&lt;br /&gt;
	elseif arg2 == &amp;quot;-&amp;quot; or arg2 == &amp;quot;&amp;quot; then&lt;br /&gt;
		-- second argument &amp;quot;-&amp;quot;: on formate le premier argument&lt;br /&gt;
		-- sans le complément&lt;br /&gt;
		texte = formatage1(arg1)&lt;br /&gt;
	elseif arg2 == &amp;quot;+&amp;quot; then&lt;br /&gt;
		-- second argument &amp;quot;+&amp;quot;: on formate le premier argument&lt;br /&gt;
		-- avec le complément et l'homonyùie&lt;br /&gt;
		texte, reste = formatage2(arg1)&lt;br /&gt;
	else&lt;br /&gt;
		-- second argument présent, avec ou sans un numéro&lt;br /&gt;
		texte, reste = formatage2(arg2)&lt;br /&gt;
		if texte == &amp;quot;&amp;quot; then&lt;br /&gt;
			-- pas de numéro: on prend le nom et le numéro du premier argument&lt;br /&gt;
			texte = formatage1(arg1)&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	-- Assemblage des éléments&lt;br /&gt;
	texte = mw.text.trim(texte)&lt;br /&gt;
	reste = mw.text.trim(reste)&lt;br /&gt;
	if reste == &amp;quot;&amp;quot; then							-- Louis II&lt;br /&gt;
		-- Pas de reste, le texte est bon&lt;br /&gt;
	elseif texte == &amp;quot;&amp;quot; then						-- Charlemagne&lt;br /&gt;
		-- Il n'y avait pas de chiffres romains,&lt;br /&gt;
		-- il faut prendre le reste sans ajouter d'espace&lt;br /&gt;
		texte = reste&lt;br /&gt;
	else&lt;br /&gt;
		local debut = string.sub(reste, 1, 1)	-- premier caractère du reste&lt;br /&gt;
		if	debut == ')' or						-- {{noble|Louis (II)}}&lt;br /&gt;
			debut == ']' or						-- {{noble|Louis [II]}}&lt;br /&gt;
			debut == ',' or						-- {{noble|Louis II, le Jeune}}&lt;br /&gt;
			debut == '.'						-- {{noble|Karl I. der Große}}&lt;br /&gt;
		then&lt;br /&gt;
			-- Le reste commence par un caractère particulier,&lt;br /&gt;
			-- il ne faut pas insérer d'espace avant le reste.&lt;br /&gt;
			texte = texte .. reste&lt;br /&gt;
		else									-- {{noble|Louis II le Jeune}}&lt;br /&gt;
			-- Le reste ne commence pas par un caractère particulier,&lt;br /&gt;
			-- il faut insérer une espace avant le reste, puisque des&lt;br /&gt;
			-- espaces au début avaient été supprimées par trim().&lt;br /&gt;
			texte = texte .. &amp;quot; &amp;quot; .. reste&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	if arg3 then&lt;br /&gt;
		-- troisième argument présent&lt;br /&gt;
		local suppl, reste = formatage2(arg3)&lt;br /&gt;
		local debut&lt;br /&gt;
		debut = string.sub(suppl, 1, 1)		-- premier caractère du supplément&lt;br /&gt;
		if	debut == ')' or					-- {{noble|Louis (II)}}&lt;br /&gt;
			debut == ']' or					-- {{noble|Louis [II]}}&lt;br /&gt;
			debut == ',' or					-- {{noble|Louis II, le Jeune}}&lt;br /&gt;
			debut == '.'					-- {{noble|Karl I. der Große}}&lt;br /&gt;
		then&lt;br /&gt;
			-- Le supplément commence par un caractère particulier,&lt;br /&gt;
			-- il ne faut pas insérer d'espace avant le supplément.&lt;br /&gt;
			texte = texte .. suppl&lt;br /&gt;
		else								-- {{noble|Louis II le Jeune}}&lt;br /&gt;
			-- Le supplément ne commence pas par un caractère particulier,&lt;br /&gt;
			-- il faut insérer une espace avant le supplément, puisque des&lt;br /&gt;
			-- espaces au début avaient été supprimées par trim().&lt;br /&gt;
			texte = texte .. &amp;quot; &amp;quot; .. suppl&lt;br /&gt;
		end&lt;br /&gt;
		debut = string.sub(reste, 1, 1)		-- premier caractère du reste&lt;br /&gt;
		if	debut == ')' or					-- {{noble|Louis (II)}}&lt;br /&gt;
			debut == ']' or					-- {{noble|Louis [II]}}&lt;br /&gt;
			debut == ',' or					-- {{noble|Louis II, le Jeune}}&lt;br /&gt;
			debut == '.'					-- {{noble|Karl I. der Große}}&lt;br /&gt;
		then&lt;br /&gt;
			-- Le reste commence par un caractère particulier,&lt;br /&gt;
			-- il ne faut pas insérer d'espace avant le reste.&lt;br /&gt;
			texte = texte .. reste&lt;br /&gt;
		else									-- {{noble|Louis II le Jeune}}&lt;br /&gt;
			-- Le supplément ne commence pas par un caractère particulier,&lt;br /&gt;
			-- il faut insérer une espace avant le reste, puisque des&lt;br /&gt;
			-- espaces au début avaient été supprimées par trim().&lt;br /&gt;
			texte = texte .. &amp;quot; &amp;quot; .. reste&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	-- Correction du bug qui empêche la gestion correcte des insécables&lt;br /&gt;
	-- dans un lien wiki&lt;br /&gt;
	texte = mw.ustring.gsub(texte, '« ', '«&amp;amp;nbsp;')&lt;br /&gt;
	texte = mw.ustring.gsub(texte, ' »', '&amp;amp;nbsp;»')&lt;br /&gt;
	return texte&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--[[&lt;br /&gt;
	Nettoyage d'une chaîne.&lt;br /&gt;
	Argument:	valeur reçue de l'appel du modèle&lt;br /&gt;
	Résultat:	l'argument, avec les diverses espaces HTML remplacés par des&lt;br /&gt;
				espaces normales&lt;br /&gt;
	&lt;br /&gt;
	Ce code est utile, par exemple avec arg2 = &amp;quot;Louis&amp;amp;nbsp;XIV&amp;quot;. Si on ne le&lt;br /&gt;
	fait pas, les résultats ne seront pas les résultats attendus.&lt;br /&gt;
	]]&lt;br /&gt;
local function nettoyage	(chaine)	&lt;br /&gt;
	if type(chaine) ~= &amp;quot;string&amp;quot; then return chaine end&lt;br /&gt;
	return chaine&lt;br /&gt;
			-- nbsp&lt;br /&gt;
			:gsub( '\194\160',		' ' )&lt;br /&gt;
			:gsub( '&amp;amp;#160;',		' ' )&lt;br /&gt;
			:gsub( '&amp;amp;nbsp;',		' ' )&lt;br /&gt;
			-- narrow nbsp&lt;br /&gt;
			:gsub( '\226\128\175',	' ' )&lt;br /&gt;
			:gsub( '&amp;amp;#8239;',		' ' )&lt;br /&gt;
			-- thin space&lt;br /&gt;
			:gsub( '\226\128\137',	' ' )&lt;br /&gt;
			:gsub( '&amp;amp;#8201;',		' ' )&lt;br /&gt;
			:gsub( '&amp;amp;thinsp;',		' ' )&lt;br /&gt;
			-- simple space&lt;br /&gt;
			:gsub( '&amp;amp;#32;',			' ' )&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--[[&lt;br /&gt;
	Validation du premier argument, qui doit être présent, non vide et différent&lt;br /&gt;
	de &amp;quot;-&amp;quot;.&lt;br /&gt;
	Argument:	valeur reçue de l'appel du modèle&lt;br /&gt;
	Résultat:	l'argument, éventuellement modifié &lt;br /&gt;
	]]&lt;br /&gt;
local function valide1		(valeur)	&lt;br /&gt;
	if valeur == nil then&lt;br /&gt;
		erreur(&amp;quot;L'argument 1 est requis&amp;quot;)&lt;br /&gt;
		end&lt;br /&gt;
	if valeur == &amp;quot;&amp;quot;  then&lt;br /&gt;
		erreur(&amp;quot;L'argument 1 ne peut pas être vide&amp;quot;)&lt;br /&gt;
		end&lt;br /&gt;
	if valeur == &amp;quot;-&amp;quot; then&lt;br /&gt;
		erreur(&amp;quot;L'argument 1 ne peut pas être un simple tiret&amp;quot;)&lt;br /&gt;
		end&lt;br /&gt;
	return nettoyage(valeur)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--[[&lt;br /&gt;
	Validation du deuxième argument, qui peut être présent, vide, ou  &amp;quot;-&amp;quot;.&lt;br /&gt;
	Argument:	valeur reçue de l'appel du modèle&lt;br /&gt;
	Résultat:	l'argument, éventuellement modifié&lt;br /&gt;
	]]&lt;br /&gt;
local function valide2		(valeur)	&lt;br /&gt;
	return nettoyage(valeur)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--[[&lt;br /&gt;
	Validation du troisième argument optionnel.&lt;br /&gt;
	Argument:	valeur reçue de l'appel du modèle&lt;br /&gt;
	Résultat:	l'argument, éventuellement modifié&lt;br /&gt;
	]]&lt;br /&gt;
local function valide3		(valeur)	&lt;br /&gt;
	return nettoyage(valeur)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--[[&lt;br /&gt;
	Traitement de l'appel.&lt;br /&gt;
	Argument:	frame reçu du modèle&lt;br /&gt;
	Résultat:	le texte à retourner au modèle, et&lt;br /&gt;
				le premier argument (pour la construction du lien)&lt;br /&gt;
	]]&lt;br /&gt;
local function traitement	(frame)		&lt;br /&gt;
	local args  = frame:getParent().args&lt;br /&gt;
	local arg1  = valide1(args[1]);&lt;br /&gt;
	local arg2  = valide2(args[2]);&lt;br /&gt;
	local arg3  = valide3(args[3]);&lt;br /&gt;
	local texte = affichage(arg1, arg2, arg3);&lt;br /&gt;
	return texte, arg1&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
--[[&lt;br /&gt;
	Formatage d'un nom dynastique, avec lien: modèle Noble.&lt;br /&gt;
	Note: Le &amp;lt;span&amp;gt; est nécessaire pour supporter [{{Noble:Louis XIV}}] sans&lt;br /&gt;
	obtenir des triple crochets dans l'affichage.&lt;br /&gt;
	]]&lt;br /&gt;
function p.Noble			(frame)		&lt;br /&gt;
	local ok, texte, arg1 = pcall(traitement, frame)&lt;br /&gt;
	if ok then	return '&amp;lt;span&amp;gt;[[' .. arg1 .. '|' .. texte .. ']]&amp;lt;/span&amp;gt;'&lt;br /&gt;
		  else	return texte&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--[[&lt;br /&gt;
	Formatage d'un nom dynastique, sans lien: modèle Noble-.&lt;br /&gt;
	]]&lt;br /&gt;
function p.Noble_			(frame)		&lt;br /&gt;
	local ok, texte = pcall(traitement, frame)&lt;br /&gt;
	return texte&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>Jacques Ducloy</name></author>
		
	</entry>
</feed>