Module:Date/Vérification Data
La documentation pour ce module peut être créée à Module:Date/Vérification Data/Documentation
local p = {}
local listeMois = { 'Janvier', 'Février', 'Mars', 'Avril', 'Mai', 'Juin', 'Juillet', 'Août', 'Septembre', 'Octobre', 'Novembre', 'Décembre', }
---
-- erreurModuleData affiche d'un message d'erreur si le Module:Langue/Data n'a pas été chargé correctement,
-- pour la page de discussion de la base de donnée et ceux qui veulent surveiller cette page.
function p.erreurModuleData()
local success, resultat = pcall ( mw.loadData, 'Module:Date/Data' )
if success == false then
local message = [[<strong class="error">Le chargement du module Date/Data génère une erreur : </strong><br />%s<br />
<span class="error">Cette erreur doit être corrigée au plus vite car des milliers de page ne s'affichent pas correctement</span>
]]
return string.format( message, resultat )
end
end
---
-- checkDataCat génère des liens vers les pages annuelles, mensuelles et d'éphémérides liè aux
-- catégories du Module:Date/Data. La date la plus ancienne dépend de 'aucun' et 'seul[1]'
-- Paramètres :
-- 1 : la catégorie. Il y aura une section par qualificatif de cette catégorie.
-- mois : oui pour avoir les liens vers les pages mensuelles et éphémérides (4 jours dans l'année)
-- alias : pour avoir des lien pour les alias en plus des qualificatif
function p.checkDataCat( frame )
local category = frame.args[1] and mw.text.trim(frame.args[1])
local cat2 = frame.args[2] and mw.text.trim(frame.args[2])
local cat3 = frame.args[3] and mw.text.trim(frame.args[3])
local reqDataLink, dataLink = require( 'Module:Date/Data' ), {}
local wikiList = {}
local currentYear = tonumber( os.date( '%Y' ) )
local newSection = '\n\n== %s ==\n'
-- copie de la table pour pouvoir la trier
for field, dataSet in pairs( reqDataLink ) do
-- boucle sur tous les qualificatif ayant pour catégorie le premier paramère
if dataSet.cat == category
or dataSet.cat == cat2
or dataSet.cat == cat3
or ( category == 'cat' and dataSet.cat == field )
then
if dataSet.qualificatif == field then
table.insert( dataLink, dataSet )
else
if dataSet.alias then
table.insert( dataSet.alias, field )
else
dataSet.alias = { field }
end
end
end
end
table.sort(
dataLink,
function(v1, v2)
return (v1.tri or '') < (v2.tri or '')
end
)
for _, dataSet in ipairs( dataLink ) do
local monthInitialYear, initialYear
-- définition de l'année à partir de laquelle on va tester toutes les année / mois
if dataSet.annee and dataSet.annee.aucun and dataSet.annee.aucun < currentYear then
local aucun = ( dataSet.annee.seul and dataSet.annee.seul[1] ) or dataSet.annee.aucun
initialYear = math.min( aucun - math.ceil( (currentYear - aucun) / 4 ), currentYear - 50 )
else
initialYear = currentYear - 50
end
if dataSet.mois and tonumber( dataSet.mois.aucun ) and ( tonumber( dataSet.mois.aucun ) < currentYear ) then
local aucun = dataSet.mois.aucun
monthInitialYear = math.min( aucun - math.ceil( (currentYear - aucun) / 4 ), currentYear - 8 )
else
monthInitialYear = currentYear - 8
end
-- création de l'ensembles des liens
-- ajout de lien vers les pages annuelles de l'année en court + 5 jusqu'à initialYear
table.insert( wikiList, string.format( newSection, dataSet.qualificatif ) )
local suffix = ' ' .. dataSet.qualificatif
if dataSet.alias then
table.insert( wikiList, 'Alias : ' .. table.concat( dataSet.alias, ', ' ) )
end
if dataSet.mois then
table.insert( wikiList, '\n\n=== Années ===\n' )
end
table.insert( wikiList, '<div class="colonnes" style="column-width:4em;column-gap:1em;text-align:left;">' )
for year = ( currentYear + 5 ), initialYear, -1 do
table.insert( wikiList, '\n* [[' .. year .. suffix ..'|' .. year .. ']]' )
end
table.insert( wikiList, '\n</div>' )
if dataSet.mois then
-- insertstion de liens vers les mois de l'année en court + 1 jusqu'à monthInitialYear
table.insert( wikiList, '\n\n=== Mois ===' )
local month, sep
for year = ( currentYear + 1 ), monthInitialYear, -1 do
table.insert( wikiList, '\n* ' .. year .. ' : ' )
sep = ' • '
for j = 1, 12 do
month = listeMois[j] .. ' '
if j == 12 then sep = ''
end
table.insert( wikiList, '[[' .. month .. year .. suffix .. '|' .. month .. ']]' .. sep )
end
end
end
end
return table.concat( wikiList )
end
return p