Module:Date/Vérification Data
From CryptoWiki
Documentation for this module may be created at Module:Date/Vérification Data/doc
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 liens pour les alias en plus des qualificatifs 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 qualificatifs ayant pour catégorie le premier paramètre 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ées / 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'ensemble 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 -- insertion de liens vers les mois de l'année en cours + 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