<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="fr">
	<id>https://www.wikonsult.org/index.php?action=history&amp;feed=atom&amp;title=Module%3ADate_r%C3%A9publicaine</id>
	<title>Module:Date républicaine - Historique des versions</title>
	<link rel="self" type="application/atom+xml" href="https://www.wikonsult.org/index.php?action=history&amp;feed=atom&amp;title=Module%3ADate_r%C3%A9publicaine"/>
	<link rel="alternate" type="text/html" href="https://www.wikonsult.org/index.php?title=Module:Date_r%C3%A9publicaine&amp;action=history"/>
	<updated>2026-08-10T11:51:58Z</updated>
	<subtitle>Historique des révisions pour cette page sur le wiki</subtitle>
	<generator>MediaWiki 1.34.1</generator>
	<entry>
		<id>https://www.wikonsult.org/index.php?title=Module:Date_r%C3%A9publicaine&amp;diff=6097&amp;oldid=prev</id>
		<title>Yves.bertin : Page créée avec « local p = {} local Outils = require( 'Module:Outils' ) local trim = Outils.trim local OutilsDates = require( 'Module:Date' ) local modeleDate = OutilsDates.modeleDate  loc… »</title>
		<link rel="alternate" type="text/html" href="https://www.wikonsult.org/index.php?title=Module:Date_r%C3%A9publicaine&amp;diff=6097&amp;oldid=prev"/>
		<updated>2020-05-13T14:12:26Z</updated>

		<summary type="html">&lt;p&gt;Page créée avec « local p = {} local Outils = require( &amp;#039;Module:Outils&amp;#039; ) local trim = Outils.trim local OutilsDates = require( &amp;#039;Module:Date&amp;#039; ) local modeleDate = OutilsDates.modeleDate  loc… »&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 Outils = require( 'Module:Outils' )&lt;br /&gt;
local trim = Outils.trim&lt;br /&gt;
local OutilsDates = require( 'Module:Date' )&lt;br /&gt;
local modeleDate = OutilsDates.modeleDate&lt;br /&gt;
&lt;br /&gt;
local type_romains = &amp;quot;[IVXL]+&amp;quot;&lt;br /&gt;
local type_nombre = &amp;quot;[0-9]+&amp;quot;&lt;br /&gt;
local type_1er = &amp;quot;1er&amp;quot;&lt;br /&gt;
local type_jour_complementaire = &amp;quot;[1-6]e%*?%-? [Jj]our compl[eé]mentaire&amp;quot;&lt;br /&gt;
&lt;br /&gt;
-- Table des libellés à afficher pour 1er, 2e, 3e, 4e, 5e, 6e&lt;br /&gt;
local infobulle = {&lt;br /&gt;
	[&amp;quot;1er&amp;quot;] = &amp;quot;Premier&amp;quot;,&lt;br /&gt;
	[&amp;quot;2e&amp;quot;] = &amp;quot;Deuxième&amp;quot;,&lt;br /&gt;
	[&amp;quot;3e&amp;quot;] = &amp;quot;Troisième&amp;quot;,&lt;br /&gt;
	[&amp;quot;4e&amp;quot;] = &amp;quot;Quatrième&amp;quot;,&lt;br /&gt;
	[&amp;quot;5e&amp;quot;] = &amp;quot;Cinquième&amp;quot;,&lt;br /&gt;
	[&amp;quot;6e&amp;quot;] = &amp;quot;Sixième&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
-- Table des noms des mois républicains, avec la casse de la première lettre et les erreurs acceptables&lt;br /&gt;
local listeNomsMois = {&lt;br /&gt;
	{&amp;quot;vendémiaire&amp;quot;, &amp;quot;vendémiaire&amp;quot;},&lt;br /&gt;
	{&amp;quot;vendemiaire&amp;quot;, &amp;quot;vendémiaire&amp;quot;},&lt;br /&gt;
	{&amp;quot;Vendémiaire&amp;quot;, &amp;quot;vendémiaire&amp;quot;},&lt;br /&gt;
	{&amp;quot;Vendemiaire&amp;quot;, &amp;quot;vendémiaire&amp;quot;},&lt;br /&gt;
    {&amp;quot;brumaire&amp;quot;, &amp;quot;brumaire&amp;quot;},&lt;br /&gt;
    {&amp;quot;Brumaire&amp;quot;, &amp;quot;brumaire&amp;quot;},&lt;br /&gt;
    {&amp;quot;frimaire&amp;quot;, &amp;quot;frimaire&amp;quot;},&lt;br /&gt;
    {&amp;quot;Frimaire&amp;quot;, &amp;quot;frimaire&amp;quot;},&lt;br /&gt;
    {&amp;quot;nivôse&amp;quot;, &amp;quot;nivôse&amp;quot;},&lt;br /&gt;
    {&amp;quot;nivose&amp;quot;, &amp;quot;nivôse&amp;quot;},&lt;br /&gt;
    {&amp;quot;Nivôse&amp;quot;, &amp;quot;nivôse&amp;quot;},&lt;br /&gt;
    {&amp;quot;Nivose&amp;quot;, &amp;quot;nivôse&amp;quot;},&lt;br /&gt;
    {&amp;quot;pluviôse&amp;quot;, &amp;quot;pluviôse&amp;quot;},&lt;br /&gt;
    {&amp;quot;pluviose&amp;quot;, &amp;quot;pluviôse&amp;quot;},&lt;br /&gt;
    {&amp;quot;Pluviôse&amp;quot;, &amp;quot;pluviôse&amp;quot;},&lt;br /&gt;
    {&amp;quot;Pluviose&amp;quot;, &amp;quot;Pluviôse&amp;quot;},&lt;br /&gt;
    {&amp;quot;ventôse&amp;quot;, &amp;quot;ventôse&amp;quot;},&lt;br /&gt;
    {&amp;quot;ventose&amp;quot;, &amp;quot;ventôse&amp;quot;},&lt;br /&gt;
    {&amp;quot;Ventôse&amp;quot;, &amp;quot;ventôse&amp;quot;},&lt;br /&gt;
    {&amp;quot;Ventose&amp;quot;, &amp;quot;ventôse&amp;quot;},&lt;br /&gt;
    {&amp;quot;germinal&amp;quot;, &amp;quot;germinal&amp;quot;},&lt;br /&gt;
    {&amp;quot;Germinal&amp;quot;, &amp;quot;germinal&amp;quot;},&lt;br /&gt;
    {&amp;quot;floréal&amp;quot;, &amp;quot;floréal&amp;quot;},&lt;br /&gt;
    {&amp;quot;floreal&amp;quot;, &amp;quot;floréal&amp;quot;},&lt;br /&gt;
    {&amp;quot;Floréal&amp;quot;, &amp;quot;floréal&amp;quot;},&lt;br /&gt;
    {&amp;quot;Floreal&amp;quot;, &amp;quot;floréal&amp;quot;},&lt;br /&gt;
    {&amp;quot;prairial&amp;quot;, &amp;quot;prairial&amp;quot;},&lt;br /&gt;
    {&amp;quot;Prairial&amp;quot;, &amp;quot;prairial&amp;quot;},&lt;br /&gt;
    {&amp;quot;messidor&amp;quot;, &amp;quot;messidor&amp;quot;},&lt;br /&gt;
    {&amp;quot;Messidor&amp;quot;, &amp;quot;messidor&amp;quot;},&lt;br /&gt;
    {&amp;quot;thermidor&amp;quot;, &amp;quot;thermidor&amp;quot;},&lt;br /&gt;
    {&amp;quot;Thermidor&amp;quot;, &amp;quot;thermidor&amp;quot;},&lt;br /&gt;
    {&amp;quot;fructidor&amp;quot;, &amp;quot;fructidor&amp;quot;},&lt;br /&gt;
    {&amp;quot;Fructidor&amp;quot;, &amp;quot;fructidor&amp;quot;},&lt;br /&gt;
    {&amp;quot;jour complémentaire&amp;quot;, &amp;quot;jour complémentaire&amp;quot;},&lt;br /&gt;
    {&amp;quot;jour complementaire&amp;quot;, &amp;quot;jour complémentaire&amp;quot;},&lt;br /&gt;
    {&amp;quot;Jour complémentaire&amp;quot;, &amp;quot;jour complémentaire&amp;quot;},&lt;br /&gt;
    {&amp;quot;Jour complementaire&amp;quot;, &amp;quot;jour complémentaire&amp;quot;}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
-- Table des noms des mois républicains, avec la casse de la première lettre et les erreurs acceptables&lt;br /&gt;
local listeOrdreMois = {&lt;br /&gt;
	[&amp;quot;vendémiaire&amp;quot;] = 1,&lt;br /&gt;
    [&amp;quot;brumaire&amp;quot;] = 2,&lt;br /&gt;
    [&amp;quot;frimaire&amp;quot;] = 3,&lt;br /&gt;
    [&amp;quot;nivôse&amp;quot;] = 4,&lt;br /&gt;
    [&amp;quot;pluviôse&amp;quot;] = 5,&lt;br /&gt;
    [&amp;quot;ventôse&amp;quot;] = 6,&lt;br /&gt;
    [&amp;quot;germinal&amp;quot;] = 7,&lt;br /&gt;
    [&amp;quot;floréal&amp;quot;] = 8,&lt;br /&gt;
    [&amp;quot;prairial&amp;quot;] =9,&lt;br /&gt;
    [&amp;quot;messidor&amp;quot;] = 10,&lt;br /&gt;
    [&amp;quot;thermidor&amp;quot;] = 11,&lt;br /&gt;
    [&amp;quot;fructidor&amp;quot;] = 12,&lt;br /&gt;
    [&amp;quot;jour complémentaire&amp;quot;] = 13&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
-- Liste des jours complémentaires&lt;br /&gt;
local listeJoursComplementaires = {&lt;br /&gt;
	{&amp;quot;jour de la vertu&amp;quot;, 1},&lt;br /&gt;
	{&amp;quot;Jour de la vertu&amp;quot;, 1},&lt;br /&gt;
    {&amp;quot;jour du génie&amp;quot;, 2},&lt;br /&gt;
    {&amp;quot;Jour du génie&amp;quot;, 2},&lt;br /&gt;
    {&amp;quot;jour du travail&amp;quot;, 3},&lt;br /&gt;
    {&amp;quot;Jour du travail&amp;quot;, 3},&lt;br /&gt;
    {&amp;quot;jour de l'opinion&amp;quot;, 4},&lt;br /&gt;
    {&amp;quot;Jour de l'opinion&amp;quot;, 4},&lt;br /&gt;
    {&amp;quot;jour des récompenses&amp;quot;, 5},&lt;br /&gt;
    {&amp;quot;Jour des récompenses&amp;quot;, 5},&lt;br /&gt;
    {&amp;quot;jour de la Révolution&amp;quot;, 6},&lt;br /&gt;
    {&amp;quot;Jour de la Révolution&amp;quot;, 6},&lt;br /&gt;
    {&amp;quot;jour de la révolution&amp;quot;, 6},&lt;br /&gt;
    {&amp;quot;Jour de la révolution&amp;quot;, 6}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
-- Table temporaire pour éviter les requêtes de test d'existence des articles.&lt;br /&gt;
-- Liste des articles existants sur les jours/mois, à remplacer par un table externe&lt;br /&gt;
local listeArticlesJours = {&lt;br /&gt;
	[&amp;quot;1er vendémiaire&amp;quot;] = true,&lt;br /&gt;
    [&amp;quot;7 vendémiaire&amp;quot;] = true,&lt;br /&gt;
    [&amp;quot;13 vendémiaire&amp;quot;] = true,&lt;br /&gt;
    [&amp;quot;14 vendémiaire&amp;quot;] = true,&lt;br /&gt;
    [&amp;quot;15 vendémiaire&amp;quot;] = true,&lt;br /&gt;
    [&amp;quot;16 vendémiaire&amp;quot;] = true,&lt;br /&gt;
    [&amp;quot;17 vendémiaire&amp;quot;] = true,&lt;br /&gt;
    [&amp;quot;18 vendémiaire&amp;quot;] = true,&lt;br /&gt;
    [&amp;quot;19 vendémiaire&amp;quot;] = true,&lt;br /&gt;
    [&amp;quot;20 vendémiaire&amp;quot;] = true,&lt;br /&gt;
    &lt;br /&gt;
    [&amp;quot;18 brumaire&amp;quot;] = true,&lt;br /&gt;
    [&amp;quot;19 brumaire&amp;quot;] = true,&lt;br /&gt;
    [&amp;quot;20 brumaire&amp;quot;] = true,&lt;br /&gt;
    [&amp;quot;21 brumaire&amp;quot;] = true,&lt;br /&gt;
    [&amp;quot;22 brumaire&amp;quot;] = true,&lt;br /&gt;
    [&amp;quot;12 brumaire&amp;quot;] = true,&lt;br /&gt;
    [&amp;quot;23 brumaire&amp;quot;] = true,&lt;br /&gt;
    [&amp;quot;24 brumaire&amp;quot;] = true,&lt;br /&gt;
    &lt;br /&gt;
    [&amp;quot;4 frimaire&amp;quot;] = true,&lt;br /&gt;
    [&amp;quot;10 frimaire&amp;quot;] = true,&lt;br /&gt;
    [&amp;quot;11 frimaire&amp;quot;] = true,&lt;br /&gt;
    &lt;br /&gt;
    [&amp;quot;25 nivôse&amp;quot;] = true,&lt;br /&gt;
    [&amp;quot;13 nivôse&amp;quot;] = true,&lt;br /&gt;
    &lt;br /&gt;
    [&amp;quot;13 pluviôse&amp;quot;] = true,&lt;br /&gt;
    [&amp;quot;16 pluviôse&amp;quot;] = true,&lt;br /&gt;
    &lt;br /&gt;
    [&amp;quot;19 ventôse&amp;quot;] = true,&lt;br /&gt;
    &lt;br /&gt;
    [&amp;quot;16 germinal&amp;quot;] = true,&lt;br /&gt;
    [&amp;quot;11 germinal&amp;quot;] = true,&lt;br /&gt;
    &lt;br /&gt;
    [&amp;quot;10 floréal&amp;quot;] = true,&lt;br /&gt;
    &lt;br /&gt;
    [&amp;quot;25 prairial&amp;quot;] = true,&lt;br /&gt;
    [&amp;quot;30 prairial&amp;quot;] = true,&lt;br /&gt;
    &lt;br /&gt;
    [&amp;quot;8 messidor&amp;quot;] = true,&lt;br /&gt;
    [&amp;quot;23 messidor&amp;quot;] = true,&lt;br /&gt;
    [&amp;quot;30 messidor&amp;quot;] = true,&lt;br /&gt;
    &lt;br /&gt;
    [&amp;quot;9 thermidor&amp;quot;] = true,&lt;br /&gt;
    &lt;br /&gt;
    [&amp;quot;18 fructidor&amp;quot;] = true,&lt;br /&gt;
    [&amp;quot;20 fructidor&amp;quot;] = true,&lt;br /&gt;
    [&amp;quot;30 fructidor&amp;quot;] = true,&lt;br /&gt;
    [&amp;quot;6 fructidor&amp;quot;] = true&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
-- Table temporaire pour éviter les requêtes de test d'existence des articles.&lt;br /&gt;
-- Liste des articles existants sur les mois/année, à remplacer par un table externe&lt;br /&gt;
local listeArticlesMois = {&lt;br /&gt;
    [&amp;quot;floréal an LXXIX&amp;quot;] = true,&lt;br /&gt;
    [&amp;quot;prairial an LXXIX&amp;quot;] = true,&lt;br /&gt;
	[&amp;quot;vendémiaire an II&amp;quot;] = true&lt;br /&gt;
}&lt;br /&gt;
   &lt;br /&gt;
-- liste des chiffres romains pour contrôle mise en forme de l'infobulle&lt;br /&gt;
local listeRomains = {	[&amp;quot;I&amp;quot;] = &amp;quot;1&amp;quot;,&lt;br /&gt;
	[&amp;quot;II&amp;quot;] = &amp;quot;2&amp;quot;,&lt;br /&gt;
	[&amp;quot;III&amp;quot;] = &amp;quot;3&amp;quot;,&lt;br /&gt;
	[&amp;quot;IV&amp;quot;] = &amp;quot;4&amp;quot;,&lt;br /&gt;
	[&amp;quot;V&amp;quot;] = &amp;quot;5&amp;quot;,&lt;br /&gt;
	[&amp;quot;VI&amp;quot;] = &amp;quot;6&amp;quot;,&lt;br /&gt;
	[&amp;quot;VII&amp;quot;] = &amp;quot;7&amp;quot;,&lt;br /&gt;
	[&amp;quot;VIII&amp;quot;] = &amp;quot;8&amp;quot;,&lt;br /&gt;
	[&amp;quot;IX&amp;quot;] = &amp;quot;9&amp;quot;,&lt;br /&gt;
	[&amp;quot;X&amp;quot;] = &amp;quot;10&amp;quot;,&lt;br /&gt;
	[&amp;quot;XI&amp;quot;] = &amp;quot;11&amp;quot;, &lt;br /&gt;
	[&amp;quot;XII&amp;quot;] = &amp;quot;12&amp;quot;,&lt;br /&gt;
	[&amp;quot;XIII&amp;quot;] = &amp;quot;13&amp;quot;,&lt;br /&gt;
	[&amp;quot;XIV&amp;quot;] = &amp;quot;14&amp;quot;,&lt;br /&gt;
	[&amp;quot;LXXIX&amp;quot;] = &amp;quot;79&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
-- extrait une chaîne de caractère (jour, mois ou année) du type passé en paramètre (string ou pattern),&lt;br /&gt;
-- en restituant :&lt;br /&gt;
-- § la chaîne exacte obtenue&lt;br /&gt;
-- § l'argument de départ délesté de cette chaîne&lt;br /&gt;
-- § un booléen indiquant la présence d'un indicateur d'affichage de l'éléments (-)&lt;br /&gt;
-- § un booléen indiquant la présence d'un indicateur de mise en place d'un lien sur l'élément (*)&lt;br /&gt;
function p.extraction_argument (argument, chaine)&lt;br /&gt;
	local x, position = 0, 0&lt;br /&gt;
	local lien, afficher = true, true&lt;br /&gt;
	local extrait = ''&lt;br /&gt;
	local chaine2 = ''&lt;br /&gt;
 	position = mw.ustring.find (argument, chaine)&lt;br /&gt;
 	if position	then&lt;br /&gt;
 		chaine2 = mw.ustring.match(argument, chaine)&lt;br /&gt;
	  	x = position + mw.ustring.len(chaine2)&lt;br /&gt;
		if x &amp;lt; (mw.ustring.len(argument) + 1) then&lt;br /&gt;
			if mw.ustring.sub(argument, x, x) == '*' then&lt;br /&gt;
				lien = false&lt;br /&gt;
				x=x+1&lt;br /&gt;
			else&lt;br /&gt;
				if mw.ustring.sub(argument, x, x) == '-' then&lt;br /&gt;
					afficher = false&lt;br /&gt;
					x=x+1&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
		extrait = mw.ustring.sub(argument, position, x - 1)&lt;br /&gt;
		argument = mw.ustring.sub(argument, 1, position - 1)..mw.ustring.sub(argument, x)&lt;br /&gt;
	end&lt;br /&gt;
		&lt;br /&gt;
	return argument, extrait, afficher, lien&lt;br /&gt;
 end&lt;br /&gt;
 	&lt;br /&gt;
-- Extraction d'éventuels jour, mois et année du calendrier républicain.&lt;br /&gt;
--&lt;br /&gt;
-- Le paramètre en entrée est sous la forme d'une chaîne, le séparateur étant l'espace&lt;br /&gt;
-- l'année doit être en chiffres romains&lt;br /&gt;
-- &amp;quot;an&amp;quot; peut être omis devant l'année ;&lt;br /&gt;
--         si l'affichage de l'année seul est demandé, &amp;quot;an&amp;quot; sera omis également à l'affichage&lt;br /&gt;
--               Ce cas est utile pour les formes : ans I, II et III&lt;br /&gt;
-- sont acceptés : an, An, de l'an, de l'An, de l’an, de l’An&lt;br /&gt;
-- le jour doit être numérique, &amp;quot;er&amp;quot; est accepté pour le premier jour de chaque mois&lt;br /&gt;
-- les paramètres peuvent être présentés dans n'importe quel ordre&lt;br /&gt;
-- les mois doivent être orthographiés correctement, mais les accents peuvent être omis&lt;br /&gt;
-- La majuscule n'est prise en compte que pour les nots possiblement en début de phrase :&lt;br /&gt;
--   § le mois est affiché et il n'y a pas de numéro de jour devant&lt;br /&gt;
--   § l'année est affichée et il n'a a pas d'autre élément devant&lt;br /&gt;
function p.test_argument (argument)&lt;br /&gt;
	local tab = { test = true,&lt;br /&gt;
					message = '',&lt;br /&gt;
					quantieme = '',&lt;br /&gt;
					exposant_jour = '',&lt;br /&gt;
					test_quantieme = false,&lt;br /&gt;
					test_jour_complementaire = false,&lt;br /&gt;
					mois = '',&lt;br /&gt;
					test_mois = false,&lt;br /&gt;
					an = '',&lt;br /&gt;
					test_an = false,&lt;br /&gt;
					lien_jour = true,&lt;br /&gt;
					lien_mois = true,&lt;br /&gt;
					lien_an = true,&lt;br /&gt;
					afficher_jour = true,&lt;br /&gt;
					afficher_mois = true,&lt;br /&gt;
					afficher_an = true,&lt;br /&gt;
					jour_saisi = '',&lt;br /&gt;
					complementaire_saisi = '',&lt;br /&gt;
					mois_saisi = '',&lt;br /&gt;
					an_saisi = '',&lt;br /&gt;
					libelle_an = ''&lt;br /&gt;
					}&lt;br /&gt;
	local position = 0&lt;br /&gt;
&lt;br /&gt;
-- On remplace les éventuels espaces insécables par des espaces simples pour simplifier le traitement qui suit&lt;br /&gt;
	argument = argument&lt;br /&gt;
		-- nbsp&lt;br /&gt;
		:gsub( '\194\160', ' ' )&lt;br /&gt;
		:gsub( '&amp;amp;nbsp;', ' ' )&lt;br /&gt;
		:gsub( '&amp;amp;#160;', ' ' )&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;thinsp;', ' ' )&lt;br /&gt;
		:gsub( '&amp;amp;#8201;', ' ' )&lt;br /&gt;
		-- simple space&lt;br /&gt;
		:gsub( '&amp;amp;#32;', ' ' )&lt;br /&gt;
					&lt;br /&gt;
-- On retire l'éventuel &amp;quot;er&amp;quot; de &amp;quot;1er&amp;quot; pour simplifier le traitement qui suit&lt;br /&gt;
    if argument:match (type_1er) then&lt;br /&gt;
		argument=argument:gsub('1er', '1')&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
-- On recherche si c'est sous la forme &amp;quot;6e jour complémentaire&amp;quot; pour écarter le &amp;quot;e&amp;quot;&lt;br /&gt;
	if mw.ustring.find(argument, type_jour_complementaire) then&lt;br /&gt;
		tab.exposant_jour = 'e'&lt;br /&gt;
		position = mw.ustring.find (argument, type_jour_complementaire)&lt;br /&gt;
		if position	then&lt;br /&gt;
			if position == 1 then&lt;br /&gt;
				argument=mw.ustring.sub(argument, 1, 1)..mw.ustring.sub(argument, 3)&lt;br /&gt;
			else&lt;br /&gt;
				argument=mw.ustring.sub(argument, 1, position)..mw.ustring.sub(argument, position + 2)&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
-- On recherche le mois, s'il existe il est retiré de la chaîne de caractère analysée&lt;br /&gt;
	for _, nomMois in ipairs( listeNomsMois ) do&lt;br /&gt;
 		if mw.ustring.find (argument, nomMois[1]) then&lt;br /&gt;
 			argument, tab.mois_saisi, tab.afficher_mois, tab.lien_mois = p.extraction_argument (argument, nomMois[1])&lt;br /&gt;
			tab.mois = nomMois[2]&lt;br /&gt;
			tab.test_mois = true&lt;br /&gt;
  			break&lt;br /&gt;
 		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
-- On recherche s'il s'agit d'un des six &amp;quot;jours complémentaires&amp;quot;, si c'est le cas il est retiré de la chaîne de caractère analysée&lt;br /&gt;
-- On conserve le libellé du jour&lt;br /&gt;
	for _, jourComplementaire in ipairs( listeJoursComplementaires ) do&lt;br /&gt;
		if mw.ustring.find (argument, jourComplementaire[1]) then&lt;br /&gt;
 			argument, tab.complementaire_saisi, tab.afficher_jour, tab.lien_jour = p.extraction_argument (argument, jourComplementaire[1])&lt;br /&gt;
			tab.test_jour_complementaire = true&lt;br /&gt;
			tab.quantieme = tab.complementaire_saisi&lt;br /&gt;
			if not(tab.afficher_jour and tab.lien_jour) then&lt;br /&gt;
				tab.quantieme = mw.ustring.sub (tab.quantieme, 1, mw.ustring.len(tab.quantieme) - 1)&lt;br /&gt;
			end&lt;br /&gt;
			break&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
-- On recherche le jour en chiffres. Si on le trouve, il est retiré de la chaîne analysée&lt;br /&gt;
	if argument:match (type_nombre)	then&lt;br /&gt;
		tab.test_quantieme = true&lt;br /&gt;
		tab.quantieme = argument:match (type_nombre)&lt;br /&gt;
		if tab.quantieme == '1'	then&lt;br /&gt;
			tab.exposant_jour = 'er'&lt;br /&gt;
		end&lt;br /&gt;
		argument, tab.jour_saisi, tab.afficher_jour, tab.lien_jour = p.extraction_argument (argument, tab.quantieme)&lt;br /&gt;
		if (tonumber(tab.quantieme) &amp;lt; 1) or (tonumber(tab.quantieme) &amp;gt; 30) then&lt;br /&gt;
			tab.test = false&lt;br /&gt;
			tab.message = '&amp;lt;span class=&amp;quot;error&amp;quot;&amp;gt;le jour doit être compris entre 1 et 30 (' .. tab.quantieme .. ')&amp;lt;/span&amp;gt;'&lt;br /&gt;
			return tab&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
-- Si la chaîne analysée est vide, le traitement est terminé &lt;br /&gt;
 	argument=trim(argument)&lt;br /&gt;
	if argument	then&lt;br /&gt;
-- On extrait l'année, donc on &amp;quot;élimine&amp;quot; les formulations du type &amp;quot;an&amp;quot; ou &amp;quot;de l'an&amp;quot; pour&lt;br /&gt;
-- récupérer le numéro d'année en chiffres romains&lt;br /&gt;
		argument, tab.libelle_an = p.extraction_argument (argument, &amp;quot;de l[%'’][Aa]n&amp;quot;)&lt;br /&gt;
		if tab.libelle_an == '' then&lt;br /&gt;
			argument, tab.libelle_an = p.extraction_argument (argument, 'An')&lt;br /&gt;
			if tab.libelle_an == '' then&lt;br /&gt;
				argument, tab.libelle_an = p.extraction_argument (argument, 'an')&lt;br /&gt;
			end&lt;br /&gt;
		else&lt;br /&gt;
			tab.libelle_an = mw.ustring.lower (tab.libelle_an)&lt;br /&gt;
		end&lt;br /&gt;
-- On vérifie si la chaîne qui reste est une année sous la forme &amp;quot;XX&amp;quot;&lt;br /&gt;
		if argument:match (type_romains) then&lt;br /&gt;
			tab.test_an = true&lt;br /&gt;
			tab.an = argument:match (type_romains)&lt;br /&gt;
			argument, tab.an_saisi, tab.afficher_an, tab.lien_an = p.extraction_argument (argument, tab.an)&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		if tab.test_an then&lt;br /&gt;
			if not listeRomains[tab.an]	then&lt;br /&gt;
				tab.test = false&lt;br /&gt;
				tab.message = '&amp;lt;span class=&amp;quot;error&amp;quot;&amp;gt;année hors du calendrier républicain (' .. tab.an .. ')&amp;lt;/span&amp;gt;'&lt;br /&gt;
				return tab&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
		argument=trim(argument)&lt;br /&gt;
		if argument	then&lt;br /&gt;
-- La chaîne n'est pas sous un format attendu, message d'erreur&lt;br /&gt;
 			tab.test = false&lt;br /&gt;
 			tab.message = '&amp;lt;span class=&amp;quot;error&amp;quot;&amp;gt;format de date incorrect (' .. argument .. ')&amp;lt;/span&amp;gt;'&lt;br /&gt;
 		end&lt;br /&gt;
	end&lt;br /&gt;
	return tab&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- Mise en forme de l'année affichée&lt;br /&gt;
-- § le paramètre année en entrée doit être sous la forme de chiffres romains&lt;br /&gt;
-- § le paramètre lien_annee indique si faut formater un lien vers un article de wikipédia&lt;br /&gt;
-- § le paramètre libelle_an indique le format de présentation : exemples : &amp;quot;de l'an&amp;quot;, &amp;quot;An&amp;quot;, etc.&lt;br /&gt;
function p.annee_affichee(annee, lien_annee, libelle_an)&lt;br /&gt;
	local chaine = ''&lt;br /&gt;
	local annee_affichee = ''&lt;br /&gt;
	local premier_car = ''&lt;br /&gt;
	local avant_an = ''&lt;br /&gt;
	local test = true&lt;br /&gt;
	local message = ''&lt;br /&gt;
&lt;br /&gt;
	if annee then&lt;br /&gt;
-- Vérification de la syntaxe en chiffres romains&lt;br /&gt;
		if annee:match(type_romains) then&lt;br /&gt;
			if libelle_an then&lt;br /&gt;
-- gestion du cas des formats du type &amp;quot;de l'an&amp;quot; pour récupérer la typo (apostrophe) et éviter que&lt;br /&gt;
-- le lien porte sur autre chose que &amp;quot;an NN&amp;quot; pour donner &amp;quot;de l'[[an NN]]&amp;quot; et non pas &amp;quot;[[An NN|de l'an NN]]&amp;quot;&lt;br /&gt;
				if mw.ustring.sub(libelle_an, 1, 1) == 'd' then&lt;br /&gt;
				    annee_affichee = 'an '&lt;br /&gt;
  				    avant_an = mw.ustring.sub(libelle_an, 1, 5)&lt;br /&gt;
				else&lt;br /&gt;
					annee_affichee = libelle_an..' '&lt;br /&gt;
				end&lt;br /&gt;
			else&lt;br /&gt;
				annee_affichee = 'an '&lt;br /&gt;
			end&lt;br /&gt;
-- Récupération de la valeur affichée dans l'infobulle&lt;br /&gt;
			annee_affichee = annee_affichee..'&amp;lt;abbr class=&amp;quot;abbr&amp;quot; title=&amp;quot;'..listeRomains[annee]..'&amp;quot;&amp;gt;'..annee..'&amp;lt;/abbr&amp;gt;'&lt;br /&gt;
			if lien_annee then&lt;br /&gt;
-- Cas particulier de l'an I&lt;br /&gt;
				if annee == 'I'	then&lt;br /&gt;
					chaine = '[[An I du calendrier républicain|'..annee_affichee..']]'&lt;br /&gt;
				else&lt;br /&gt;
					chaine = '[[An '..annee..'|'..annee_affichee..']]'&lt;br /&gt;
				end&lt;br /&gt;
			else&lt;br /&gt;
				chaine = annee_affichee&lt;br /&gt;
			end&lt;br /&gt;
			chaine = avant_an..chaine&lt;br /&gt;
			return test, chaine&lt;br /&gt;
		end&lt;br /&gt;
	else&lt;br /&gt;
		test = false&lt;br /&gt;
		message = '&amp;lt;span class=&amp;quot;error&amp;quot;&amp;gt;aucune année passée en paramètre (annee_affichee)&amp;lt;/span&amp;gt;'&lt;br /&gt;
		return test, message&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- Fonction calculant une date du calendrier grégorien à partir d'une date du calendrier républicain&lt;br /&gt;
function p.conversion_Gregorien (jour, mois, an)&lt;br /&gt;
-- table du nombre de jour écoulé depuis le début de l'année jusqu'au premier de chaque mois du calendrier grégorien&lt;br /&gt;
-- (sans tenir compte des années bissextiles)&lt;br /&gt;
	local rang_mois_Greg = { 0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334 }&lt;br /&gt;
	local x = 0&lt;br /&gt;
	local jour_Rep, mois_Rep, an_Rep, jour_Greg, mois_Greg, an_Greg = '', '', '', '', '', ''&lt;br /&gt;
	local test = true&lt;br /&gt;
	local message = ''&lt;br /&gt;
&lt;br /&gt;
-- Fonction permettant de connaître le nombre de jours bissextiles entre deux années&lt;br /&gt;
    local function nb_jours_complement_bissextile (an)&lt;br /&gt;
    	local nb = 0&lt;br /&gt;
    	for i = 1792, 1791+an do&lt;br /&gt;
    		if  OutilsDates.isLeapYear(i) then&lt;br /&gt;
    			nb = nb + 1&lt;br /&gt;
    		end&lt;br /&gt;
    	end&lt;br /&gt;
    	return nb&lt;br /&gt;
    end&lt;br /&gt;
    &lt;br /&gt;
-- Si la date se présente sous la forme &amp;quot;nom de jour complémentaire an XX&amp;quot;, on détermine le rang chronologique du jour en question &lt;br /&gt;
	if (mois == 'jour complémentaire') and (jour:match('^[Jj]our')) then&lt;br /&gt;
		for _, jourComplementaire in ipairs( listeJoursComplementaires ) do&lt;br /&gt;
			if jourComplementaire[1] == jour then&lt;br /&gt;
				jour_Rep = jourComplementaire[2]&lt;br /&gt;
				break&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	else&lt;br /&gt;
		jour_Rep = tonumber(jour)&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
-- Valeurs numériques de l'année et du mois républicains				&lt;br /&gt;
	an_Rep = tonumber(listeRomains[an])&lt;br /&gt;
	mois_Rep = listeOrdreMois[mois]&lt;br /&gt;
&lt;br /&gt;
-- contrôles ?&lt;br /&gt;
--	if not (an_Rep &amp;lt; 14) and not (mois_Rep &amp;lt; 4)&lt;br /&gt;
--	then&lt;br /&gt;
--		if not (an_Rep == 79)&lt;br /&gt;
--		then&lt;br /&gt;
--			return false, 'Pas de conversion pour les dates non officielles'&lt;br /&gt;
--		end&lt;br /&gt;
--	end&lt;br /&gt;
	&lt;br /&gt;
-- On détermine le nombre de jour entre la date transmise et le 1er janvier 1792. On connaît le nombre de jour entre le 1er janvier&lt;br /&gt;
-- et le 22 septembre 1792, première journée du calendrier républicain : 265&lt;br /&gt;
-- On multiplie le nombre d'années écoulées avant l'année en cours par 365, et on ajoute un jour par année sextile (pour les périodes considérées,&lt;br /&gt;
-- durant lesquelles ce calendrier a été officiel, tous les quatre ans à partir de l'an III).&lt;br /&gt;
-- On multiplie le nomdre de mois écoulés avant le mois en cours par 30&lt;br /&gt;
-- On ajoute le quantième du jour transmis ou calculé&lt;br /&gt;
	jour_Greg = 365*(an_Rep -1) + 30*(mois_Rep - 1) + jour_Rep + math.floor(an_Rep/4) + 265&lt;br /&gt;
	&lt;br /&gt;
-- On ajoute le résultat de la division de la partie entière du nombre de jours trouvé par la durée d'une année,&lt;br /&gt;
-- en tenant compte des années bissextiles comprises dans la période&lt;br /&gt;
	an_Greg = 1792 + math.floor((jour_Greg - nb_jours_complement_bissextile (an_Rep)-1)/365)&lt;br /&gt;
	&lt;br /&gt;
-- On calcule le reste de jours en tenant compte des années bissextiles&lt;br /&gt;
-- (une toutes les 4 ans sauf celles qui sont divisibles par 4 et par cent mais pas par 400)&lt;br /&gt;
	jour_Greg = jour_Greg - (an_Greg-1792)*365 - math.floor((an_Greg-1789)/4) + math.floor(an_Greg/1801) + math.floor(an_Greg/1901)&lt;br /&gt;
	&lt;br /&gt;
-- On détermine le mois correspondant au résultat&lt;br /&gt;
	local n = 1&lt;br /&gt;
	local m = 1&lt;br /&gt;
	local r = 0&lt;br /&gt;
	local bissextile = OutilsDates.isLeapYear(an_Greg)&lt;br /&gt;
	for i = 1, 12 do&lt;br /&gt;
		r = rang_mois_Greg[i]&lt;br /&gt;
-- Prise en compte d'un éventuel 29 février (années bissextiles, via isLeapYear(year) du module Date)&lt;br /&gt;
		if bissextile then&lt;br /&gt;
			if i &amp;gt; 2 then&lt;br /&gt;
				r = r + 1&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
		if not(r &amp;lt; jour_Greg) then&lt;br /&gt;
			i = 12&lt;br /&gt;
		else&lt;br /&gt;
			n = r&lt;br /&gt;
			m = i&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	mois_Greg = m&lt;br /&gt;
	jour_Greg = jour_Greg - n&lt;br /&gt;
	&lt;br /&gt;
	return test, message, jour_Greg, mois_Greg, an_Greg&lt;br /&gt;
&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- Contrôle et mise en forme&lt;br /&gt;
function p._date_republicaine (aucun_lien, args)&lt;br /&gt;
	local tab = { test = true,&lt;br /&gt;
					nocat = false,&lt;br /&gt;
					message = '',&lt;br /&gt;
					quantieme = '',&lt;br /&gt;
					exposant_jour = '',&lt;br /&gt;
					test_quantieme = false,&lt;br /&gt;
					test_jour_complementaire = false,&lt;br /&gt;
					mois = '',&lt;br /&gt;
					test_mois = false,&lt;br /&gt;
					an = '',&lt;br /&gt;
					test_an = false,&lt;br /&gt;
					lien_jour = true,&lt;br /&gt;
					lien_mois = true,&lt;br /&gt;
					lien_an = true,&lt;br /&gt;
					afficher_jour = true,&lt;br /&gt;
					afficher_mois = true,&lt;br /&gt;
					afficher_an = true,&lt;br /&gt;
					jour_saisi = '',&lt;br /&gt;
					complementaire_saisi = '',&lt;br /&gt;
					mois_saisi = '',&lt;br /&gt;
					an_saisi = '',&lt;br /&gt;
					libelle_an = ''&lt;br /&gt;
					}&lt;br /&gt;
	local test_conversion, test_conversion_sans_lien = false, false&lt;br /&gt;
	local conv_jour_mois, conv_jour, conv_an, conv_mois_an = false, false, false, false&lt;br /&gt;
	local deux_points = false&lt;br /&gt;
	local parametres, chaine = '', ''&lt;br /&gt;
&lt;br /&gt;
-- Test pour ne pas catégoriser les pages indésirables dans les catégories spéciales de maintenance&lt;br /&gt;
	if args.nocat then&lt;br /&gt;
		if args.nocat == '' then&lt;br /&gt;
			tab.nocat = true&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
-- § Les paramètres peuvent se présenter sous la forme d'une seule chaîne ou de 3 paramètres séparés.&lt;br /&gt;
-- Dans ce dernier cas, on constitue une chaîne en utilisant l'espace comme séparateur, ce qui permet un traitement unique pour les 2 cas&lt;br /&gt;
-- § Si &amp;quot;conversion&amp;quot; ou &amp;quot;grégorien&amp;quot; est spécifié, on stocke l'info mais on ne l'inclut pas dans la chaîne ; il faut en plus&lt;br /&gt;
-- vérifier :&lt;br /&gt;
-- §§ si * est présisé (dans ce cas, pas de liens sur la date grégorienne convertie)&lt;br /&gt;
-- §§ si le caractère &amp;quot;:&amp;quot; apparaît, pour savoir si le séparateur est &amp;quot;:&amp;quot;, sinon ce sont des parenthèes&lt;br /&gt;
-- §§ si une des séquences &amp;quot;jm&amp;quot;, &amp;quot;j&amp;quot;, &amp;quot;ma&amp;quot; ou &amp;quot;a&amp;quot; sont présentes, pour déterminer quels éléments de la date grégorienne&lt;br /&gt;
--           doivent être affiché (j=jour, m=mois, a=an)&lt;br /&gt;
	for i = 1, 4 do&lt;br /&gt;
		if args[i] then&lt;br /&gt;
			if (mw.ustring.match (args[i], '[Cc]onversion')) or (mw.ustring.match (args[i], '[Gg]régorien')) then&lt;br /&gt;
				if not mw.ustring.match (args[i], 'jma') then&lt;br /&gt;
					if mw.ustring.match (args[i], 'jm') then&lt;br /&gt;
						conv_jour_mois = true&lt;br /&gt;
					elseif mw.ustring.match (args[i], 'j') then&lt;br /&gt;
						conv_jour = true&lt;br /&gt;
					elseif mw.ustring.match (args[i], 'ma') then&lt;br /&gt;
						conv_mois_an = true&lt;br /&gt;
					elseif mw.ustring.match (args[i], 'a') then&lt;br /&gt;
						conv_an = true&lt;br /&gt;
					end&lt;br /&gt;
				end&lt;br /&gt;
				if mw.ustring.match (args[i], ':') then&lt;br /&gt;
					deux_points = true&lt;br /&gt;
				end&lt;br /&gt;
				if mw.ustring.match (args[i], '%*') then&lt;br /&gt;
					test_conversion_sans_liens = true&lt;br /&gt;
				else&lt;br /&gt;
					test_conversion = true&lt;br /&gt;
				end&lt;br /&gt;
			else&lt;br /&gt;
				parametres = parametres..args[i]..' '&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
 	if parametres then&lt;br /&gt;
 		tab = p.test_argument (parametres)&lt;br /&gt;
 	else&lt;br /&gt;
 		tab.test = false&lt;br /&gt;
 		tab.message = p.categorie_erreur (tab.nocat, '&amp;lt;span class=&amp;quot;error&amp;quot;&amp;gt;Aucun paramètre transmis&amp;lt;/span&amp;gt;')&lt;br /&gt;
 		return tab.message&lt;br /&gt;
 	end&lt;br /&gt;
&lt;br /&gt;
-- Contrôle sur le nombre de jours si c'est un jour complémentaire&lt;br /&gt;
	if tab.mois and tab.quantieme then&lt;br /&gt;
		if (tab.mois == 'jour complémentaire') then&lt;br /&gt;
			if (tonumber(tab.quantieme) &amp;gt; 6) then&lt;br /&gt;
				tab.test = false&lt;br /&gt;
				tab.message = '&amp;lt;span class=&amp;quot;error&amp;quot;&amp;gt;Il n\'y a que 6 jours complémentaires au maximum (' .. tab.quantieme .. ')&amp;lt;/span&amp;gt;'&lt;br /&gt;
			else&lt;br /&gt;
				if tab.an then&lt;br /&gt;
					if (tonumber(tab.quantieme) == 6) and not ((tab.an == 'III') or (tab.an == 'VII') or (tab.an == 'XI')) then&lt;br /&gt;
						tab.test = false&lt;br /&gt;
						tab.message = '&amp;lt;span class=&amp;quot;error&amp;quot;&amp;gt;Il n\'y a que 5 jours complémentaires cette année là (' .. tab.quantieme .. ')&amp;lt;/span&amp;gt;'&lt;br /&gt;
					end&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	if not tab.test	then&lt;br /&gt;
		tab.message = p.categorie_erreur (tab.nocat, tab.message)&lt;br /&gt;
		return tab.message&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	if aucun_lien then&lt;br /&gt;
		tab.lien_jour, tab.lien_mois, tab.lien_an = false, false, false&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
-- Début de la mise en forme typographique et de l'établissement des liens possibles sur une date du calendrier républicain&lt;br /&gt;
-- le paramètre &amp;quot;date_affiche&amp;quot; reçoit les éléments au fur et à mesure de l'analyse&lt;br /&gt;
	local date_affichee = ''&lt;br /&gt;
	local jour = ''&lt;br /&gt;
	local jour_affiche = ''&lt;br /&gt;
	local article = ''&lt;br /&gt;
&lt;br /&gt;
-- Si on a le jour mais pas le mois, c'est un cas invalide&lt;br /&gt;
	if tab.test_quantieme and not(tab.test_mois) then&lt;br /&gt;
		tab.message = p.categorie_erreur (tab.nocat, '&amp;lt;span class=&amp;quot;error&amp;quot;&amp;gt;date invalide, mois manquant&amp;lt;/span&amp;gt;')&lt;br /&gt;
		return tab.message&lt;br /&gt;
 	else&lt;br /&gt;
-- on ne peut pas avoir en même temps un jour complémentaire et un numéro de jour ou un mois&lt;br /&gt;
		if (tab.test_quantieme or tab.test_mois) and tab.test_jour_complementaire then&lt;br /&gt;
			tab.test = false&lt;br /&gt;
			tab.message = p.categorie_erreur (tab.nocat, '&amp;lt;span class=&amp;quot;error&amp;quot;&amp;gt;date invalide, paramètres incompatibles&amp;lt;/span&amp;gt;')&lt;br /&gt;
			return tab.message&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
-- Cas où l'année n'est pas spécifiée&lt;br /&gt;
	if not tab.test_an then&lt;br /&gt;
-- Cas où on a le jour (en chiffres) et le mois&lt;br /&gt;
		if tab.test_quantieme and tab.test_mois then&lt;br /&gt;
			if tab.afficher_jour then&lt;br /&gt;
-- Cas particulier pour la mise en forme de &amp;quot;1er&amp;quot;, &amp;quot;2e&amp;quot;, etc.&lt;br /&gt;
				if not (tab.exposant_jour == '') then&lt;br /&gt;
					jour = tab.quantieme..tab.exposant_jour&lt;br /&gt;
					jour_affiche = '&amp;lt;abbr class=&amp;quot;abbr&amp;quot; title=&amp;quot;'..infobulle[jour]..'&amp;quot; &amp;gt;'..tab.quantieme..'&amp;lt;sup&amp;gt;'..tab.exposant_jour..'&amp;lt;/sup&amp;gt;&amp;lt;/abbr&amp;gt;'&lt;br /&gt;
				else&lt;br /&gt;
					jour = tab.quantieme&lt;br /&gt;
					jour_affiche = tab.quantieme&lt;br /&gt;
				end&lt;br /&gt;
				if tab.lien_jour then&lt;br /&gt;
					article = jour..' '..tab.mois&lt;br /&gt;
					if listeArticlesJours[article] then&lt;br /&gt;
-- Si l'index formé par l'ensemble jour-mois existe dans la table, c'est qu'un article wikipédia existe =&amp;gt; lien [[jour mois]&lt;br /&gt;
-- Sinon =&amp;gt; lien sur le mois seulement (les articles sur les mois existent dans tous les cas)&lt;br /&gt;
						date_affichee = date_affichee..'[['..article..'|'..jour_affiche..']]'&lt;br /&gt;
					else&lt;br /&gt;
						date_affichee = date_affichee..jour_affiche&lt;br /&gt;
					end&lt;br /&gt;
				else&lt;br /&gt;
					date_affichee = date_affichee..jour_affiche&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
			if tab.afficher_mois then&lt;br /&gt;
				if date_affichee == '' then&lt;br /&gt;
					tab.mois = string.sub(tab.mois_saisi, 1, 1)..string.sub(tab.mois, 2)&lt;br /&gt;
				end&lt;br /&gt;
				if tab.lien_mois then&lt;br /&gt;
					date_affichee = date_affichee..' [['..tab.mois..']]'&lt;br /&gt;
				else&lt;br /&gt;
					date_affichee = date_affichee..' '..tab.mois&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
		else&lt;br /&gt;
-- Cas où seul le nom précis d'un des jours complémentaires est présent,&lt;br /&gt;
-- si demandé on affiche le lien (les articles sur ces jours existent dans tous les cas)&lt;br /&gt;
			if tab.test_jour_complementaire and tab.afficher_jour then&lt;br /&gt;
				if tab.lien_jour then&lt;br /&gt;
					date_affichee = '[['..tab.quantieme..']]'&lt;br /&gt;
				else&lt;br /&gt;
					date_affichee = tab.quantieme&lt;br /&gt;
				end&lt;br /&gt;
			else&lt;br /&gt;
-- Cas où seul le mois est présent, si demandé on affiche le lien (les articles sur les mois existent dans tous les cas)&lt;br /&gt;
				if tab.test_mois and tab.afficher_mois then&lt;br /&gt;
					tab.mois = string.sub(mois_saisi, 1, 1)..string.sub(tab_mois, 2)&lt;br /&gt;
					if tab.lien_mois then&lt;br /&gt;
						date_affichee = '[['..tab.mois..']]'&lt;br /&gt;
					else&lt;br /&gt;
						date_affichee = tab.mois&lt;br /&gt;
					end&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	else&lt;br /&gt;
-- Cas où l'année est renseignée&lt;br /&gt;
&lt;br /&gt;
-- Cas des dates sous la forme jour_complémentaire année&lt;br /&gt;
-- Traitement du jour&lt;br /&gt;
		if tab.test_jour_complementaire and tab.afficher_jour then&lt;br /&gt;
			if tab.lien_jour then&lt;br /&gt;
-- On vérifie dans la table s'il existe un article dont le lien est de la forme [[jour complémentaire an XX]]&lt;br /&gt;
-- Si ce n'est pas le cas, on affiche un lien sur le jour seul&lt;br /&gt;
				article = tab.quantieme..' an '..tab.an&lt;br /&gt;
				if listeArticlesMois[article] then&lt;br /&gt;
					date_affichee = '[['..article..'|'..tab.quantieme..']]'&lt;br /&gt;
				else&lt;br /&gt;
					date_affichee = '[['..tab.quantieme..']]'&lt;br /&gt;
				end&lt;br /&gt;
			else&lt;br /&gt;
-- Pas de lien demandé&lt;br /&gt;
 				date_affichee = date_affichee..tab.quantieme&lt;br /&gt;
			end&lt;br /&gt;
			if tab.afficher_an then&lt;br /&gt;
-- Traitement de l'année&lt;br /&gt;
				tab.test, chaine = p.annee_affichee(tab.an, tab.lien_an)&lt;br /&gt;
				date_affichee = date_affichee..' '..chaine&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
-- Cas des dates sous la forme jour mois année&lt;br /&gt;
-- Traitement du jour&lt;br /&gt;
		if tab.test_quantieme and tab.test_mois	then&lt;br /&gt;
			if tab.afficher_jour then&lt;br /&gt;
-- Cas particulier pour la mise en forme de &amp;quot;1er&amp;quot;, &amp;quot;2e&amp;quot;, etc.&lt;br /&gt;
				if not (tab.exposant_jour == '') then&lt;br /&gt;
					jour = tab.quantieme..tab.exposant_jour&lt;br /&gt;
					jour_affiche = '&amp;lt;abbr class=&amp;quot;abbr&amp;quot; title=&amp;quot;'..infobulle[jour]..'&amp;quot; &amp;gt;'..tab.quantieme..'&amp;lt;sup&amp;gt;'..tab.exposant_jour..'&amp;lt;/sup&amp;gt;&amp;lt;/abbr&amp;gt;'&lt;br /&gt;
				else&lt;br /&gt;
					jour = tab.quantieme&lt;br /&gt;
					jour_affiche = tab.quantieme&lt;br /&gt;
				end&lt;br /&gt;
				article = jour..' '..tab.mois&lt;br /&gt;
-- Si l'index formé par l'ensemble jour-mois existe dans la table, c'est qu'un article wikipédia existe =&amp;gt; lien [[jour mois|jour]]&lt;br /&gt;
-- Sinon =&amp;gt; lien sur le mois seulement (les articles sur les mois existent dans tous les cas)&lt;br /&gt;
				if tab.lien_jour and listeArticlesJours[article] then&lt;br /&gt;
					date_affichee = '[['..article..'|'..jour_affiche..']]'&lt;br /&gt;
				else&lt;br /&gt;
					date_affichee = jour_affiche&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
			if tab.afficher_mois then&lt;br /&gt;
				if tab.lien_mois then&lt;br /&gt;
					if date_affichee == '' then&lt;br /&gt;
						tab.mois = string.sub(tab.mois_saisi, 1, 1)..string.sub(tab.mois, 2)&lt;br /&gt;
					end&lt;br /&gt;
					article = tab.mois..' an '..tab.an&lt;br /&gt;
					if listeArticlesMois[article] then&lt;br /&gt;
						date_affichee = date_affichee..' [['..article..'|'..tab.mois..']]'&lt;br /&gt;
					else&lt;br /&gt;
						date_affichee = date_affichee..' [['..tab.mois..']]'&lt;br /&gt;
					end&lt;br /&gt;
				else&lt;br /&gt;
					date_affichee = date_affichee..' '..tab.mois&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
					&lt;br /&gt;
			if tab.afficher_an then&lt;br /&gt;
				if not (date_affichee == '')&lt;br /&gt;
				and ((string.upper(string.sub (tab.libelle_an, 1, 1)) == 'A') or (tab.libelle_an == '')) then&lt;br /&gt;
					tab.libelle_an = nil&lt;br /&gt;
				end&lt;br /&gt;
				tab.test, chaine = p.annee_affichee (tab.an, tab.lien_an, tab.libelle_an)&lt;br /&gt;
				if not tab.test	then&lt;br /&gt;
					return chaine&lt;br /&gt;
				else&lt;br /&gt;
					date_affichee = date_affichee..' '..chaine&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	&lt;br /&gt;
-- Cas où il n'y a pas de numéro de jour, date de la forme    mois année&lt;br /&gt;
-- On vérifie dans la table s'il existe un article dont le lien est de la forme [[mois an XX]]&lt;br /&gt;
-- Si ce n'est pas le cas, on affiche un lien sur le mois seul&lt;br /&gt;
		if tab.test_mois and not tab.test_quantieme and tab.afficher_mois then&lt;br /&gt;
			if date_affichee == '' then&lt;br /&gt;
				tab.mois = string.sub(tab.mois_saisi, 1, 1)..string.sub(tab.mois, 2)&lt;br /&gt;
			end&lt;br /&gt;
			article = tab.mois..' an '..tab.an&lt;br /&gt;
			if tab.lien_mois then&lt;br /&gt;
				if listeArticlesMois[article] then&lt;br /&gt;
					date_affichee = '[['..article..'|'..tab.mois..']]'&lt;br /&gt;
				else&lt;br /&gt;
					date_affichee = '[['..tab.mois..']]'&lt;br /&gt;
				end&lt;br /&gt;
			else&lt;br /&gt;
				date_affichee = tab.mois&lt;br /&gt;
			end&lt;br /&gt;
					&lt;br /&gt;
			if tab.afficher_an then&lt;br /&gt;
				tab.test, chaine = p.annee_affichee (tab.an, tab.lien_an)&lt;br /&gt;
				date_affichee = date_affichee..' '..chaine&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
-- Cas où on n'affiche que l'année&lt;br /&gt;
		if tab.afficher_an and (date_affichee == '') then&lt;br /&gt;
			tab.test, date_affichee = p.annee_affichee(tab.an, tab.lien_an, tab.libelle_an)&lt;br /&gt;
			if not tab.test then&lt;br /&gt;
				date_affichee = p.categorie_erreur (tab.nocat, date_affichee)&lt;br /&gt;
				return date_affichee&lt;br /&gt;
			end&lt;br /&gt;
 		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
-- Si la date présente des espaces, on les rend insécables&lt;br /&gt;
	if date_affichee:match( ' ' ) then&lt;br /&gt;
		date_affichee = '&amp;lt;span class=&amp;quot;nowrap&amp;quot;&amp;gt;'..date_affichee..'&amp;lt;/span&amp;gt;'&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
-- Mise en forme de l'éventuelle date correspondante dans le calendrier grégorien&lt;br /&gt;
&lt;br /&gt;
-- Cette possibilité est activée par le passage d'une chaine de caracère contenant &amp;quot;conversion&amp;quot; ou &amp;quot;grégorien&amp;quot;&lt;br /&gt;
	if test_conversion or test_conversion_sans_liens then&lt;br /&gt;
		if ((tab.test_quantieme and tab.test_mois) or tab.test_jour_complementaire) and tab.test_an	then&lt;br /&gt;
			if tab.test_jour_complementaire then&lt;br /&gt;
				tab.mois = 'jour complémentaire'&lt;br /&gt;
			end&lt;br /&gt;
			tab.test, tab.message, jour_Greg, mois_Greg, an_Greg = p.conversion_Gregorien(tab.quantieme, tab.mois, tab.an)&lt;br /&gt;
			if tab.test	then&lt;br /&gt;
-- Si le paramètre contenant la chaine conversion présente le caractère « : » (deux points),&lt;br /&gt;
-- le résultat est présenté sous la forme      date républicaine : date gégorienne&lt;br /&gt;
-- Sinon, le le résultat est présenté sous la forme      date républicaine (date gégorienne)&lt;br /&gt;
				if deux_points then&lt;br /&gt;
					date_affichee = date_affichee..' : '&lt;br /&gt;
				else&lt;br /&gt;
					date_affichee = date_affichee..' ('&lt;br /&gt;
				end&lt;br /&gt;
-- § La mention facultative de j, jm, a, etc. permet de selectionner ce qui est conservé à l'affichage de la date grégorienne&lt;br /&gt;
-- cela permet de faire appel au module date en utilisant les &amp;quot;-&amp;quot; qui masquent l'affichage des éléments non souhaités&lt;br /&gt;
-- § conversion* permet d'afficher la date grégorienne sans liens&lt;br /&gt;
				if test_conversion_sans_liens then&lt;br /&gt;
					if conv_jour_mois then&lt;br /&gt;
						date_affichee = date_affichee..modeleDate({jour_Greg, mois_Greg, an_Greg..'-', nolinks=&amp;quot;oui&amp;quot;})&lt;br /&gt;
					elseif conv_jour then&lt;br /&gt;
						date_affichee = date_affichee..modeleDate({jour_Greg, mois_Greg..'-', an_Greg..'-', nolinks=&amp;quot;oui&amp;quot;})&lt;br /&gt;
					elseif conv_mois_an then&lt;br /&gt;
						date_affichee = date_affichee..modeleDate({nil, mois_Greg, an_Greg, nolinks=&amp;quot;oui&amp;quot;})&lt;br /&gt;
					elseif conv_an then&lt;br /&gt;
						date_affichee = date_affichee..an_Greg&lt;br /&gt;
					else&lt;br /&gt;
						date_affichee = date_affichee..modeleDate({jour_Greg, mois_Greg, an_Greg, nolinks=&amp;quot;oui&amp;quot;})&lt;br /&gt;
					end&lt;br /&gt;
				else&lt;br /&gt;
					if conv_jour_mois then&lt;br /&gt;
						date_affichee = date_affichee..modeleDate({jour_Greg, mois_Greg, an_Greg..'-'})&lt;br /&gt;
					elseif conv_jour then&lt;br /&gt;
						date_affichee = date_affichee..modeleDate({jour_Greg, mois_Greg..'-', an_Greg..'-'})&lt;br /&gt;
					elseif conv_mois_an then&lt;br /&gt;
						date_affichee = date_affichee..modeleDate({nil, mois_Greg, an_Greg})&lt;br /&gt;
					elseif conv_an then&lt;br /&gt;
						date_affichee = date_affichee..'[['..an_Greg..']]'&lt;br /&gt;
					else&lt;br /&gt;
						date_affichee = date_affichee..modeleDate({jour_Greg, mois_Greg, an_Greg})&lt;br /&gt;
					end&lt;br /&gt;
				end&lt;br /&gt;
				if not deux_points then&lt;br /&gt;
					date_affichee = date_affichee..')'&lt;br /&gt;
				end&lt;br /&gt;
			else&lt;br /&gt;
				date_affichee = date_affichee..message&lt;br /&gt;
			end&lt;br /&gt;
		else&lt;br /&gt;
			tab.test = false&lt;br /&gt;
			date_affichee = '&amp;lt;span class=&amp;quot;error&amp;quot;&amp;gt;conversion impossible, date incomplète&amp;lt;/span&amp;gt;'&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
&lt;br /&gt;
			&lt;br /&gt;
	if not tab.test then&lt;br /&gt;
		date_affichee = p.categorie_erreur (date_affichee)&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	return date_affichee&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.categorie_erreur (nocat, message)&lt;br /&gt;
 	local namespaceCategorisation = { [0] = true, [4] = true, [10] = true, [14] = true, [100] = true }&lt;br /&gt;
--	local namespaceCategorisation = { [4] = true }&lt;br /&gt;
	if namespaceCategorisation[ mw.title.getCurrentTitle().namespace ] and (nocat=='') then&lt;br /&gt;
		return message .. '[[Catégorie:Page avec une erreur de paramètre du modèle Date républicaine]]'&lt;br /&gt;
	else&lt;br /&gt;
		return message&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- Fonction permettant la mie en forme typographique et l'établissement des liens possibles sur une date du calendrier républicain&lt;br /&gt;
-- en vigueur en France entre 1792 et 1806 ainsi qu'en 1871 pendant la Commune. Il est également possible de faire afficher&lt;br /&gt;
-- la date grégorienne correspondante en indiquant &amp;quot;conversion&amp;quot; en paramètre.&lt;br /&gt;
function p.date_republicaine (frame)&lt;br /&gt;
	local args = Outils.extractArgs(frame)&lt;br /&gt;
	local aucun_lien = false&lt;br /&gt;
	&lt;br /&gt;
	local chaine = p._date_republicaine (aucun_lien, args)&lt;br /&gt;
&lt;br /&gt;
	return chaine&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- Fonction permettant la mie en forme typographique sur une date du calendrier républicain&lt;br /&gt;
-- en vigueur en France entre 1792 et 1806 ainsi qu'en 1871 pendant la Commune. Il est également possible de faire afficher&lt;br /&gt;
-- la date grégorienne correspondante en indiquant &amp;quot;conversion&amp;quot; en paramètre.&lt;br /&gt;
function p.date_republicaine_sans_liens (frame)&lt;br /&gt;
	local args = Outils.extractArgs(frame)&lt;br /&gt;
	local aucun_lien = true&lt;br /&gt;
	&lt;br /&gt;
	local chaine = p._date_republicaine (aucun_lien, args)&lt;br /&gt;
&lt;br /&gt;
	return chaine&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>Yves.bertin</name></author>
		
	</entry>
</feed>