<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="fr">
	<id>https://lugwiki.stcgrupo.es/mediawiki/index.php?action=history&amp;feed=atom&amp;title=Module%3ATest</id>
	<title>Module:Test - Historique des versions</title>
	<link rel="self" type="application/atom+xml" href="https://lugwiki.stcgrupo.es/mediawiki/index.php?action=history&amp;feed=atom&amp;title=Module%3ATest"/>
	<link rel="alternate" type="text/html" href="https://lugwiki.stcgrupo.es/index.php?title=Module:Test&amp;action=history"/>
	<updated>2026-04-15T23:58:01Z</updated>
	<subtitle>Historique des versions pour cette page sur le wiki</subtitle>
	<generator>MediaWiki 1.45.1</generator>
	<entry>
		<id>https://lugwiki.stcgrupo.es/index.php?title=Module:Test&amp;diff=1410&amp;oldid=prev</id>
		<title>Admin : 1 revision imported</title>
		<link rel="alternate" type="text/html" href="https://lugwiki.stcgrupo.es/index.php?title=Module:Test&amp;diff=1410&amp;oldid=prev"/>
		<updated>2021-04-10T11:25:38Z</updated>

		<summary type="html">&lt;p&gt;1 revision imported&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;fr&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Version précédente&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Version du 10 avril 2021 à 11:25&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;4&quot; class=&quot;diff-notice&quot; lang=&quot;fr&quot;&gt;&lt;div class=&quot;mw-diff-empty&quot;&gt;(Aucune différence)&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;
&lt;!-- diff cache key mediawiki:diff:1.41:old-1409:rev-1410 --&gt;
&lt;/table&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://lugwiki.stcgrupo.es/index.php?title=Module:Test&amp;diff=1409&amp;oldid=prev</id>
		<title>module&gt;Zolo le 29 août 2020 à 08:52</title>
		<link rel="alternate" type="text/html" href="https://lugwiki.stcgrupo.es/index.php?title=Module:Test&amp;diff=1409&amp;oldid=prev"/>
		<updated>2020-08-29T08:52:05Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Nouvelle page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;-- TODO: améliorer les synergies avec Module:Date (gestion par module:Date de dates sans lien et de &amp;quot;XIe siècle en astronautique&amp;quot;&lt;br /&gt;
&lt;br /&gt;
local datemodule = require &amp;#039;Module:Date&amp;#039;&lt;br /&gt;
local linguistic -- = require &amp;#039;Module:Linguistique&amp;#039; -- chargé uniquement si nécessaire&lt;br /&gt;
local roman -- = require &amp;#039;Module:Romain&amp;#039; -- chargé uniquement si nécessaire&lt;br /&gt;
local p = {}&lt;br /&gt;
&lt;br /&gt;
local numericprecision = { -- convertir les précisions en valeurs numériques = à celles utilisées par Wikidata&lt;br /&gt;
	gigayear = 0,&lt;br /&gt;
	megayear = 3,&lt;br /&gt;
	millenium = 6,&lt;br /&gt;
	century = 7,&lt;br /&gt;
	decade = 8,&lt;br /&gt;
	year = 9,&lt;br /&gt;
	month = 10,&lt;br /&gt;
	day = 11,&lt;br /&gt;
	hour = 12,&lt;br /&gt;
	minute = 13,&lt;br /&gt;
	second = 14,&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function p.listLabels(frame)&lt;br /&gt;
	local id = frame.args[1]&lt;br /&gt;
	local item = mw.wikibase.getEntity(id)&lt;br /&gt;
	local str = &amp;quot;&amp;quot;&lt;br /&gt;
	local labels = item.labels&lt;br /&gt;
	for i, j in pairs(labels) do&lt;br /&gt;
		str = str .. &amp;#039;&amp;quot;&amp;#039;.. j.language .. &amp;#039;&amp;quot; : &amp;quot;&amp;#039; .. j.value .. &amp;#039;&amp;quot;,&amp;lt;br /&amp;gt;&amp;#039;&lt;br /&gt;
	end&lt;br /&gt;
	return str&lt;br /&gt;
               &lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function vowelfirst(str)&lt;br /&gt;
	linguistic = require &amp;#039;Module:Linguistique&amp;#039;&lt;br /&gt;
	return linguistic.vowelfirst(str)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function setprecision(obj, maxprecision)&lt;br /&gt;
	local precision&lt;br /&gt;
	if type(obj) == &amp;quot;string&amp;quot; then&lt;br /&gt;
		precision = tonumber(obj)&lt;br /&gt;
	elseif type(obj) == &amp;quot;number&amp;quot; then&lt;br /&gt;
		precision = obj&lt;br /&gt;
	elseif type(obj) == &amp;quot;table&amp;quot; then&lt;br /&gt;
		precision = tonumber(obj.precision) or numericprecision[obj.precision]&lt;br /&gt;
	end&lt;br /&gt;
	if not precision then&lt;br /&gt;
		precision = 0&lt;br /&gt;
	end&lt;br /&gt;
	-- maxprecision, surtout pour données Wikidata quand on veut afficher avec moins de précision que l&amp;#039;input (par exemple afficher seulement l&amp;#039;année)&lt;br /&gt;
	if maxprecision then&lt;br /&gt;
		maxprecision = tonumber(maxprecision) or numericprecision[maxprecision]&lt;br /&gt;
	end&lt;br /&gt;
	if maxprecision then&lt;br /&gt;
		return math.min(precision, maxprecision)&lt;br /&gt;
	end&lt;br /&gt;
	return precision&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function findcalendar(object)&lt;br /&gt;
	local calendar = object.calendarmodel&lt;br /&gt;
	if calendar == &amp;#039;https://www.wikidata.org/entity/Q1985786&amp;#039; then&lt;br /&gt;
		return &amp;#039;julian&amp;#039;&lt;br /&gt;
	end if true then return error(object.calendarmodel) end&lt;br /&gt;
	return &amp;#039;gregorian&amp;#039;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function bigDate(year, precision) -- TODO : gestion de la précision&lt;br /&gt;
	local format = require &amp;quot;Module:Format&amp;quot;&lt;br /&gt;
	local val, unit = 0, &amp;quot;&amp;quot;&lt;br /&gt;
	if year &amp;gt; 999999999 then&lt;br /&gt;
		unit = &amp;quot; [[giga|G]][[Année julienne|a]]&amp;quot;&lt;br /&gt;
		val = year / 1000000000&lt;br /&gt;
	elseif year &amp;gt; 999999 then&lt;br /&gt;
		unit = &amp;quot; [[méga|M]][[Année julienne|a]]&amp;quot;&lt;br /&gt;
		val = year / 1000000&lt;br /&gt;
	end&lt;br /&gt;
	val = format.do_formatnum({val})&lt;br /&gt;
	return val .. unit&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
local function milleniumString(millenium, era, hideera)&lt;br /&gt;
	roman =  roman or require &amp;#039;Module:Romain&amp;#039;&lt;br /&gt;
	local str = roman.toRoman(millenium) .. &amp;#039;&amp;lt;sup&amp;gt;e&amp;lt;/sup&amp;gt; millénaire&amp;#039;&lt;br /&gt;
	if era == &amp;#039;-&amp;#039; and (not hideera) then&lt;br /&gt;
		str = str .. &amp;#039; av. J.-C.&amp;#039;&lt;br /&gt;
	end&lt;br /&gt;
	return str&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function centuryString(century, era, hideera)&lt;br /&gt;
	roman =  roman or require &amp;#039;Module:Romain&amp;#039;&lt;br /&gt;
	local str = roman.toRoman(century) .. &amp;#039;&amp;lt;sup&amp;gt;e&amp;lt;/sup&amp;gt; siècle&amp;#039;&lt;br /&gt;
	if era == &amp;#039;-&amp;#039; and (not hideera) then&lt;br /&gt;
		str = str .. &amp;#039; av. J.-C.&amp;#039;&lt;br /&gt;
	end&lt;br /&gt;
	return str&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function decadeString(decade, era, hideera)&lt;br /&gt;
	local str = &amp;#039;années &amp;#039; .. decade .. &amp;#039;0&amp;#039;&lt;br /&gt;
	if era == &amp;#039;-&amp;#039; and (not hideera) then&lt;br /&gt;
		str = str .. &amp;#039; av. J.-C.&amp;#039;&lt;br /&gt;
	end&lt;br /&gt;
	return &amp;#039;[[&amp;#039; .. str .. &amp;#039;]]&amp;#039;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.simplestring(dateobject, displayformat)&lt;br /&gt;
&lt;br /&gt;
	-- transforme un object date ponctuel en texte&lt;br /&gt;
	-- les dates de type ISO devraient passer par Module:Date, mais il faut pouvoir désactiver les liens&lt;br /&gt;
	if type(dateobject) == &amp;#039;string&amp;#039; or type(dateobject) == &amp;#039;nil&amp;#039; then&lt;br /&gt;
		return dateobject&lt;br /&gt;
	end&lt;br /&gt;
	if (not dateobject.year) and (not dateobject.month) and dateobject.day then -- si seul le jour est passé, par exemple à cause de removeclutter, le format n&amp;#039;est pas pris en charge par module:Date&lt;br /&gt;
		return dateobject.day&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local era = dateobject.era&lt;br /&gt;
&lt;br /&gt;
	if not displayformat then&lt;br /&gt;
		displayformat = {}&lt;br /&gt;
	end&lt;br /&gt;
	local linktopic = displayformat.linktopic&lt;br /&gt;
	local nolinks&lt;br /&gt;
	if linktopic == &amp;#039;-&amp;#039; then&lt;br /&gt;
		nolinks = true&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local str&lt;br /&gt;
	local precision = setprecision(dateobject, displayformat.precision)&lt;br /&gt;
	&lt;br /&gt;
	-- formats gérés par ce module&lt;br /&gt;
	local year = tonumber( dateobject.year) or 0&lt;br /&gt;
	&lt;br /&gt;
	if year &amp;gt; 999999 then -- grosses dates pour l&amp;#039;astronomie, la paléontologie&lt;br /&gt;
		return bigDate(year, precision)&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	if precision == 6 then&lt;br /&gt;
		local millenium = math.floor(year/1000) + 1&lt;br /&gt;
		str = milleniumString(millenium, era, hideera)&lt;br /&gt;
	elseif precision == 7 then&lt;br /&gt;
		local century = math.floor(year/100) + 1&lt;br /&gt;
		str = centuryString(century, era, hideera)&lt;br /&gt;
	elseif precision == 8 then&lt;br /&gt;
		local decade = tostring(math.floor(year/10))&lt;br /&gt;
		str = decadeString(decade, era, hideera)&lt;br /&gt;
	end&lt;br /&gt;
	if str then&lt;br /&gt;
		return str&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	-- formats gérés par Module:Date&lt;br /&gt;
	local year = dateobject.year&lt;br /&gt;
	if year and (era == &amp;#039;-&amp;#039;) then&lt;br /&gt;
		year = 0 - year&lt;br /&gt;
	end&lt;br /&gt;
	local month, day&lt;br /&gt;
	&lt;br /&gt;
	if precision &amp;gt; 9 then&lt;br /&gt;
		month = dateobject.month&lt;br /&gt;
		if precision &amp;gt; 10 then&lt;br /&gt;
			day = dateobject.day&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local calendar = findcalendar(dateobject)&lt;br /&gt;
&lt;br /&gt;
	local avJC -- équivalent de hideera pour modeleDate&lt;br /&gt;
	if displayformat.hideera then&lt;br /&gt;
		avJC = &amp;#039;non&amp;#039;&lt;br /&gt;
	end&lt;br /&gt;
	str = datemodule.modeleDate{jour = day, mois = month, annee = year, qualificatif = linktopic, nolinks = nolinks, avJC = avJC, julien = (calendar == &amp;#039;julian&amp;#039;)}&lt;br /&gt;
	return str or &amp;#039;&amp;#039;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function fromToNow(d, datestr, precision) -- retourne &amp;quot;depuis&amp;quot; plutôt que &amp;quot;à partir de&amp;quot; quand c&amp;#039;est pas terminé&lt;br /&gt;
	if (precision &amp;gt;= 11) or (precision == 7) or (precision == 6)  then -- ont dit &amp;quot;à partir du pour les dates avec jour, les siècles, les millénaires&lt;br /&gt;
		if vowelfirst(datestr) then -- suppose l&amp;#039;absence de lien interne&lt;br /&gt;
			return &amp;quot;depuis l&amp;#039;&amp;quot; .. datestr&lt;br /&gt;
		else&lt;br /&gt;
			return &amp;quot;depuis le &amp;quot; .. datestr&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	return &amp;quot;depuis &amp;quot; .. datestr&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function fromdate(d, displayformat)  -- retourne &amp;quot;à partir de date&amp;quot; en langage naturel&lt;br /&gt;
	displayformat = displayformat or {}&lt;br /&gt;
	local precision = setprecision(d, displayformat.precision)&lt;br /&gt;
	local datestr = p.simplestring(d, displayformat)&lt;br /&gt;
	if displayformat and displayformat.textformat == &amp;#039;minimum&amp;#039; then&lt;br /&gt;
		return datestr -- par exemple pour les classements MH, juste afficher la date de début&lt;br /&gt;
	end&lt;br /&gt;
	if displayformat and displayformat.textformat == &amp;#039;short&amp;#039; then&lt;br /&gt;
		return datestr .. &amp;#039;&amp;amp;nbsp;&amp;amp;ndash;&amp;amp;nbsp;&amp;#039; -- pour certaines infobox (footballeur par exemple), afficher date de début et un tiret&lt;br /&gt;
	end&lt;br /&gt;
	if displayformat.stilltrue and p.before ( os.date(&amp;quot;!%Y-%m-%dT%TZ&amp;quot;), d) then return&lt;br /&gt;
		fromToNow(d, datestr, precision)&lt;br /&gt;
	end&lt;br /&gt;
	if (precision &amp;gt;= 11) or (precision == 7) or (precision == 6)  then -- ont dit &amp;quot;à partir du pour les dates avec jour, les siècles, les millénaires&lt;br /&gt;
		return &amp;#039;à partir du &amp;#039; .. datestr&lt;br /&gt;
	end&lt;br /&gt;
	if (precision == 10) and (vowelfirst(datemodule.determinationMois(d.month))) then&lt;br /&gt;
		return &amp;quot;à partir d&amp;#039;&amp;quot; .. datestr&lt;br /&gt;
	end&lt;br /&gt;
	return &amp;#039;à partir de &amp;#039; .. datestr&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function upto(d, displayformat)  -- retourne &amp;quot;jusqu&amp;#039;à date&amp;#039; en langage naturel&lt;br /&gt;
	displayformat = displayformat or {}&lt;br /&gt;
	local datestring = p.simplestring(d, displayformat)&lt;br /&gt;
	local precision = setprecision(d, displayformat.precision)&lt;br /&gt;
	if displayformat and displayformat.textformat == &amp;#039;infobox&amp;#039; then&lt;br /&gt;
		return &amp;#039;&amp;amp;nbsp;&amp;amp;ndash;&amp;amp;nbsp;&amp;#039;.. datestring-- pour certaines infobox (footballeur par exemple), afficher date de début et un tiret&lt;br /&gt;
	end&lt;br /&gt;
	if displayformat and displayformat.textformat == &amp;#039;short&amp;#039; then&lt;br /&gt;
		return&amp;#039;&amp;amp;nbsp;&amp;amp;ndash;&amp;amp;nbsp;&amp;#039; .. datestring -- pour certaines infobox (footballeur par exemple), afficher date de début et un tiret&lt;br /&gt;
	end&lt;br /&gt;
	if (precision &amp;gt;= 11) or (precision == 7) or (precision == 6) then --on dit &amp;quot;jusqu&amp;#039;au&amp;quot; pour les dates avec jour, et pour les siècles&lt;br /&gt;
		return &amp;quot;jusqu&amp;#039;au &amp;quot; .. datestring&lt;br /&gt;
	elseif (precision &amp;gt; 9) then&lt;br /&gt;
		return &amp;quot;jusqu&amp;#039;à &amp;quot; .. datestring&lt;br /&gt;
	else&lt;br /&gt;
		return &amp;quot;jusqu&amp;#039;en &amp;quot; .. datestring&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function fromuntillong(startstr, endstr, era, precision)&lt;br /&gt;
	-- on dit &amp;quot;du 3 au 14 janvier&amp;quot; mais &amp;quot;de septembe à octobre&lt;br /&gt;
	if precision &amp;gt;= 11 then -- &amp;gt;= day&lt;br /&gt;
		return &amp;quot;du &amp;quot; .. startstr .. &amp;quot; au &amp;quot; ..  endstr .. era&lt;br /&gt;
	else&lt;br /&gt;
		if vowelfirst(startstr) then&lt;br /&gt;
			return &amp;quot;d&amp;#039;&amp;quot; .. startstr .. &amp;quot; à &amp;quot;.. endstr .. era&lt;br /&gt;
		else&lt;br /&gt;
			return &amp;quot;de &amp;quot; .. startstr .. &amp;quot; à &amp;quot; .. endstr .. era&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function removeclutter(startpoint, endpoint, precision, displayformat) -- prépare à rendre la date plus jolie : &amp;quot;juin 445 av-JC-juillet 445 av-JC -&amp;gt; juin-juillet 445-av-JC&amp;quot;&lt;br /&gt;
	if (type(startpoint) ~= &amp;#039;table&amp;#039;) or (type(endpoint) ~= &amp;#039;table&amp;#039;) then&lt;br /&gt;
		return startpoint, endpoint, precision, displayformat&lt;br /&gt;
	end&lt;br /&gt;
	local era = endpoint.era&lt;br /&gt;
	local sameera&lt;br /&gt;
	if startpoint.era == endpoint.era then&lt;br /&gt;
		sameera = true&lt;br /&gt;
	end&lt;br /&gt;
	if (endpoint.year == startpoint.year) then&lt;br /&gt;
		startpoint.year = nil&lt;br /&gt;
		if (startpoint.month == endpoint.month) then&lt;br /&gt;
			startpoint.month = nil&lt;br /&gt;
			if (startpoint.day == endpoint.day) then&lt;br /&gt;
				startpoint.day = nil&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	return startpoint, endpoint, era, displayformat, sameera&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.between(startpoint, endpoint, displayformat)&lt;br /&gt;
	displayformat = displayformat or {}&lt;br /&gt;
	local precision = setprecision(endpoint, displayformat.precision) or 9&lt;br /&gt;
&lt;br /&gt;
	local startpoint = p.simplestring(startpoint, displayformat)&lt;br /&gt;
	local endpoint = p.simplestring(endpoint, displayformat)&lt;br /&gt;
	&lt;br /&gt;
	if not (startpoint or endpoint) then&lt;br /&gt;
		return nil&lt;br /&gt;
	end&lt;br /&gt;
	if not endpoint then&lt;br /&gt;
		if precision &amp;lt;= 10 then&lt;br /&gt;
			return &amp;quot;après &amp;quot; ..  startpoint&lt;br /&gt;
		else&lt;br /&gt;
			return &amp;quot;après le &amp;quot; ..  startpoint&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	if not startpoint then&lt;br /&gt;
		if precision &amp;lt;= 10 then&lt;br /&gt;
			return &amp;quot;avant &amp;quot; ..  endpoint&lt;br /&gt;
		else&lt;br /&gt;
			return &amp;quot;avant le &amp;quot; ..  endpoint&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
 	-- analyse les paramètres pour éviter les redondances&lt;br /&gt;
 	&lt;br /&gt;
	local startpoint, endpoint, era, displayformat, sameera = removeclutter(startpoint, endpoint, precision, displayformat)&lt;br /&gt;
&lt;br /&gt;
	local startstr, endstr =  p.simplestring(startpoint, displayformat), p.simplestring(endpoint, displayformat)&lt;br /&gt;
	displayformat.hideera = true&lt;br /&gt;
	&lt;br /&gt;
	if (startstr == &amp;#039;&amp;#039;) or (startstr == endstr) then&lt;br /&gt;
		if (not sameera) then&lt;br /&gt;
			displayformat.hideera = false --sinon c&amp;#039;est incompréhensible&lt;br /&gt;
			return p.simplestring(endpoint, displayformat)&lt;br /&gt;
		end&lt;br /&gt;
		return endstr&lt;br /&gt;
	end&lt;br /&gt;
	-- pour éviter les tournures répétitives comme  &amp;quot;du 13 septembre 2006 au 18 september 2006&amp;quot;&lt;br /&gt;
	if era == &amp;quot;-&amp;quot; then&lt;br /&gt;
		era = &amp;quot; av J-C&amp;quot;&lt;br /&gt;
	else&lt;br /&gt;
		era = &amp;quot;&amp;quot;&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	if precision &amp;lt;= 10 then&lt;br /&gt;
		return &amp;quot;entre &amp;quot; .. startstr .. &amp;quot; et &amp;quot; .. endstr .. &amp;quot; &amp;quot; .. era&lt;br /&gt;
	else&lt;br /&gt;
		return &amp;quot;entre le &amp;quot; .. startstr .. &amp;quot; et le &amp;quot; .. endstr .. &amp;quot; &amp;quot; .. era&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function fromuntil(startpoint, endpoint, displayformat)&lt;br /&gt;
	displayformat = displayformat or {}&lt;br /&gt;
	local precision = setprecision(endpoint, displayformat.precision)&lt;br /&gt;
&lt;br /&gt;
 	-- analyse les paramètres pour éviter les redondances&lt;br /&gt;
 	&lt;br /&gt;
	local startpoint, endpoint, era, displayformat, sameera = removeclutter(startpoint, endpoint, precision, displayformat)&lt;br /&gt;
&lt;br /&gt;
	local hideera= displayformat.hideera	&lt;br /&gt;
	displayformat.hideera = true -- pour les chaînes intermédiaires&lt;br /&gt;
	&lt;br /&gt;
	startpoint.calendarmodel = &amp;#039;gregorian&amp;#039; -- vilain hack pour éviter d&amp;#039;afficher deux fois &amp;quot;dans le calendrier julien&amp;quot;&lt;br /&gt;
	local startstr, endstr =  p.simplestring(startpoint, displayformat), p.simplestring(endpoint, displayformat)&lt;br /&gt;
	&lt;br /&gt;
	if (startstr == &amp;#039;&amp;#039;) or (startstr == endstr) then&lt;br /&gt;
		displayformat.hideera = hideera -- on va faire une chaîne simple, on reprend donc le format initialement demandé&lt;br /&gt;
		if (not sameera) then&lt;br /&gt;
			displayformat.hideera = false --sinon c&amp;#039;est incompréhensible&lt;br /&gt;
		end&lt;br /&gt;
		return p.simplestring(endpoint, displayformat)&lt;br /&gt;
	end&lt;br /&gt;
	-- pour éviter les tournures répétitives comme  &amp;quot;du 13 septembre 2006 au 18 september 2006&amp;quot;&lt;br /&gt;
	if era == &amp;#039;-&amp;#039; then&lt;br /&gt;
		era = &amp;#039; av J-C&amp;#039;&lt;br /&gt;
	else&lt;br /&gt;
		era = &amp;#039;&amp;#039;&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if displayformat.textformat == &amp;#039;long&amp;#039; then&lt;br /&gt;
		return fromuntillong(startstr, endstr, era, precision)&lt;br /&gt;
	elseif (type(precision) == &amp;quot;number&amp;quot;) and (precision &amp;gt; 9) then -- si les date contiennent des mois ou jours, il vaut mieux un espace&lt;br /&gt;
		return startstr .. &amp;#039; -&amp;lt;wbr&amp;gt; &amp;#039; .. endstr .. era&lt;br /&gt;
	else&lt;br /&gt;
		return startstr .. &amp;#039;-&amp;lt;wbr&amp;gt;&amp;#039; .. endstr .. era&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
function p.fuzzydate(dateobject, displayformat)&lt;br /&gt;
	local str = p.simplestring(dateobject, displayformat)&lt;br /&gt;
	if not str then&lt;br /&gt;
		return nil&lt;br /&gt;
	end&lt;br /&gt;
	return &amp;quot;vers &amp;quot; .. str&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.daterange(startpoint, endpoint, displayformat)&lt;br /&gt;
	if startpoint and endpoint then&lt;br /&gt;
		return fromuntil(startpoint, endpoint, displayformat)&lt;br /&gt;
	elseif startpoint then&lt;br /&gt;
		return fromdate(startpoint, displayformat)&lt;br /&gt;
	elseif endpoint then&lt;br /&gt;
		return upto(endpoint, displayformat)&lt;br /&gt;
	else&lt;br /&gt;
		return nil&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.duration(start, ending)&lt;br /&gt;
	if (not start) or (not ending) then&lt;br /&gt;
		return nil -- ?&lt;br /&gt;
	end&lt;br /&gt;
	return datemodule.age(start.year, start.month, start.day, ending.year, ending.month, ending.day)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function splitWDdate(str) -- depuis datavalue.value.time de Wikidata, fonctionnerait aussi en utilisant simplement splitISO&lt;br /&gt;
	local pattern = &amp;quot;(%W)(%d+)%-(%d+)%-(%d+)&amp;quot;&lt;br /&gt;
	local era, year, month, day = str:match(pattern)&lt;br /&gt;
	return era, year, month, day&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function splitISO(str)&lt;br /&gt;
	local era, year, month, day&lt;br /&gt;
	era = string.sub(str, 1, 1)&lt;br /&gt;
	if tonumber(era) then&lt;br /&gt;
		era = &amp;#039;+&amp;#039;&lt;br /&gt;
	end&lt;br /&gt;
	local f = string.gmatch(str, &amp;#039;%d+&amp;#039;)&lt;br /&gt;
	year, month, day = f(), f(), f()&lt;br /&gt;
	return era, year, month, day&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.splitDate(orig, calendar)&lt;br /&gt;
	if not orig then&lt;br /&gt;
		return nil&lt;br /&gt;
	end&lt;br /&gt;
	if type(orig) == &amp;#039;table&amp;#039; then&lt;br /&gt;
		return orig&lt;br /&gt;
	end&lt;br /&gt;
	if type(orig) ~= &amp;#039;string&amp;#039; then&lt;br /&gt;
		return error(&amp;quot;bad datatype for date, string expected, got &amp;quot; .. type(orig))&lt;br /&gt;
	end&lt;br /&gt;
	local era, y, m, d = splitWDdate(orig) &lt;br /&gt;
	if not era then&lt;br /&gt;
		era, y, m, d = splitISO(orig)&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	y, m, d = tonumber(y or 1), tonumber(m or 1), tonumber(d or 1)&lt;br /&gt;
	return {day = d, month = m, year = y, era = era, type = &amp;#039;dateobject&amp;#039;, calendar = calendar}&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.before(a, b) -- return true if b is before a or if at least one of a or b is missing&lt;br /&gt;
	a = p.splitDate(a) &lt;br /&gt;
	b = p.splitDate(b)&lt;br /&gt;
	if (not a) or (not b) then&lt;br /&gt;
		return true&lt;br /&gt;
	end&lt;br /&gt;
	local order = {&amp;#039;era&amp;#039;, &amp;#039;year&amp;#039;, &amp;#039;month&amp;#039;, &amp;#039;day&amp;#039;}&lt;br /&gt;
	for i, j in pairs(order) do&lt;br /&gt;
		if b[j] &amp;lt; a[j] then&lt;br /&gt;
			return true&lt;br /&gt;
		elseif b[j] &amp;gt; a[j] then&lt;br /&gt;
			return false&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	return true&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.compardate(frame)&lt;br /&gt;
local d = require &amp;#039;Module:Date complexe&amp;#039;&lt;br /&gt;
	return d.equal(frame.args[1], frame.args[2], frame.args[3])&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.test(frame)&lt;br /&gt;
	if type(frame) == &amp;#039;table&amp;#039; then&lt;br /&gt;
		return frame.args and frame.args[1]&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>module&gt;Zolo</name></author>
	</entry>
</feed>