« Module:Date » : différence entre les versions

Contenu supprimé Contenu ajouté
liste_mois : + abréviation févr.
modeleDate : ajout paramètre "compact" pour afficher le mois sous forme d'abréviation ; validationJourMoisAnnee : erreur si année 0
Ligne 26 :
 
 
-- liste des mois, écriture exacte et simplifiéealias, en minuscule
local liste_moislisteMois = {
{ "num = 1, nJour = 31, abrev = 'janv.', nom = 'janvier"', "alias = { 'jan."', "'janv."', "'jan"', "'janv"', "'january",' nJour = 31} },
{ "num = 2, nJour = 29, abrev = 'fév.', nom = 'février"', "alias = { 'fevrier"', "'fev."', "'fev"', "'fév."', "'fév"', "'févr"', "'févr."', "'february",' nJour = 29} },
{ "num = 3, nJour = 31, abrev = 'mars"', " nom = 'mars', alias = { 'mar."', "'mar"', "'march",' nJour = 31} },
{ "num = 4, nJour = 30, abrev = 'avr.', nom = 'avril"', "alias = { 'avr."', "'avr"', "'apr"', "'april", nJour = 30'} },
{ "mai",num "may"= 5, nJour = 31, abrev = 'mai', nom = 'mai', alias = { 'may' } },
{ "juin",num "jun",= "june"6, nJour = 30, abrev = 'juin', nom = 'juin', alias = { 'jun', 'june' } },
{ "num = 7, nJour = 31, abrev = 'juill.', nom = 'juillet"', "alias = { 'juil."', "'juil"', "'juill."', "'juill"', "'jul"', "'july", nJour' = 31} },
{ num = 8, nJour = 31, abrev = 'août', nom = 'août', alias = { 'aoû', 'aug', 'august' } },
{ "août", "aout", "aou", "aug", "august", nJour = 31 },
{ "num = 9, nJour = 30, abrev = 'sept.', nom = 'septembre"', "alias = { 'sept."', "'sept"', "'sep."', "'sep"', "'september",' nJour = 30} },
{ num = 10, nJour = 31, abrev = 'oct.', nom = 'octobre', alias = { 'oct.', 'oct', 'october' } },
{ "octobre", "oct.", "oct", "october", nJour = 31 },
{ num = 11, nJour = 30, abrev = 'nov.', nom = 'novembre', alias = { 'nov.', 'nov', 'november' } },
{ "novembre", "nov.", "nov", "november", nJour = 30 },
{ "num = 12, nJour = 31, abrev = 'déc.', nom = 'décembre"', "alias = { 'decembre"', "'déc."', "'dec."', "'dec"', "'déc"', "'december", nJour' = 31} },
aout = { num = 8, nJour = 31, abrev = 'aout', nom = 'aout', alias = { 'aou' } },
}
 
fun.liste_mois = liste_mois
-- ajoute les noms, abreviations et alias en tant que clé de listeMois
for i = 1, 412 do
listeMois[ tostring( i ) ] = listeMois[ i ]
listeMois[ '0' .. i ] = listeMois[ i ]
listeMois[ listeMois[ i ].nom ] = listeMois[ i ]
listeMois[ listeMois[ i ].abrev ] = listeMois[ i ]
local j = 1
while listeMois[ i ].alias[ j ] do
listeMois[ listeMois[ i ].alias[ j ] ] = listeMois[ i ]
j = j + 1
end
end
for _, n in ipairs( listeMois.aout.alias ) do
listeMois[ n ] = listeMois.aout
end
 
local liste_saison = {
Ligne 49 ⟶ 65 :
{ 'hiver', 'winter', },
}
 
-- nom du mois à partir du numéro
function fun.nomDuMois( num )
if type( num ) ~= "number" or num < 1 or num > 12 then
return nil
end
return liste_mois[num][1]
end
 
---
-- valide que la chaîne passée est un mois valide.
-- retourne le nom complet ounuméro nildu simois non[1-12] si reconnu
-- si reconnu, retourne aussi le numéro du mois [1-12]
function fun.valideMois( mois )
local m = trim( mois )
if m then
m = mw.ustring.lower( m )
forif ilisteMois[ =m 1,] 12 dothen
return listeMois[ m ].nom, listeMois[ m ].num
local j = 1
while liste_mois[i][j] do
if liste_mois[i][j] == m then
return liste_mois[i][1], i
end
j = j + 1
end
end
end
-- pas trouvé = return nil
end
 
Ligne 84 :
-- si reconnu, retourne aussi le numéro du mois [1-12]
function fun.valideSaison( saison )
iflocal types = trim( saison ) ~= "string" then
if s then
return nil
local m s = mw.ustring.lower( trim( saison ) )
end
jfor i = j1, +4 1do
local j = 1
local m = mw.ustring.lower( trim( saison ) )
while liste_moisliste_saison[i][j] do
if liste_moisliste_saison[i][j] == ms then
for i = 1, 4 do
return liste_moisliste_saison[i][1], i
local j = 1
end
while liste_saison[i][j] ~= nil do
if liste_saison[i][ j] == mj + then1
return liste_saison[i][1]
end
j = j + 1
end
end
-- pas trouvé = return nil
end
 
Ligne 125 ⟶ 122 :
end
if num and not nom then
nom = liste_moislisteMois[ num ][1].nom
end
return nom, num
Ligne 337 ⟶ 334 :
return erreur( 'Année', bannee )
end
elseif annee == 0 then
return erreur( 'Année', 0 )
end
else
Ligne 363 ⟶ 362 :
if jour < 1 or jour > 31 then
return erreur( 'Jour', bjour )
elseif jour > liste_moislisteMois[numMois].nJour then
return erreur( 'Jour', bjour .. ' ' .. mois )
elseif jour == 29 and numMois == 2 and annee and ( math.fmod( annee, 4 ) ~= 0 ) then
Ligne 416 ⟶ 415 :
end
 
---
-- analyse des paramètres 1, 2, 3 et 4
-- pour déterminer les paramètres jour, moisn année, qualificatif, masquerAnnee, et masquerMois
function fun.modeleDateAnalyseJMA( args )
local function masquerParam( p )
-- sépare le signe moins final éventuel signifiant que le paramètre ne soit pas être affiché.
local s
if trim( p ) then
Ligne 453 ⟶ 456 :
-- émule le modèle {{m|Date}}.
-- Paramètres :
-- 1 : jour (numéro ou "1er"). optionnel,ou sila absentdate pas de jourcomplète
-- 2 : mois (en toutes lettres) ou spécialité de l'année
-- 3 : année (nombre)
-- 4 : optionnel, spécialité de l'année
-- julien : date dans le calendrier julien
-- Comportement spécial ("truc à deux balles au lieu d'utiliser un
-- compact : affiche le mois sous forme d'abréviation
-- paramètre nommé du genre "sans année=oui"...") : si 1 est vide
-- avJC : non pour désactiver l'affichage de « av. J.-C. » pour les date négatives
-- mais que le reste est complet → on n'affiche pas l'année
-- âge : ajout la durée depuis cette date
-- nolink : ne met pas de lien sur la date
-- naissance : ajoute la class "bday"
-- mort : ajoute la class "dday"
function fun.modeleDate( frame )
local args = Outils.extractArgs( frame )
Ligne 475 ⟶ 482 :
avJC = 'avJC',
nolinks = 'nolinks',
compact = 'compact',
compacte = 'compact',
}
for n, v in pairs( listeParam ) do
Ligne 500 ⟶ 509 :
-- on traite l'age, naissance et mort
local age = trim( args['âge'] or) args['and fun.age']( annee, numMois, jour )
age = age and fun.age( annee, numMois, jour )
local naissance = trim( args.naissance )
local mort = trim( args.mort )
Ligne 507 ⟶ 515 :
-- on traite le calendrier
local gannee, gmois, gjour = annee, numMois, jour -- date suivant le calendrier grégorien pour <time>
local jannee, jmois, jjour = annee, mois, jour -- servira éventuellement à a affiché la date selon le calendrier julien
local julien2, julien3 = nil, nil -- servira éventuellement à a affiché des parenthèses
local julien = trim( string.lower( args.julien or '' ) )
Ligne 521 ⟶ 529 :
elseif julien == 'oui' then
gannee, gmois, gjour = fun.julianToGregorian( annee, numMois, jour )
annee, mois, jour = gannee, liste_moislisteMois[gmois][1].nom, gjour
end
else
Ligne 535 ⟶ 543 :
local wikiListe = TableBuilder.new() -- reçois le texte affiché pour chaque paramètre
local iso = TableBuilder.new() -- reçois le format date ISO de ce paramètre
local texteMois = mois -- texte du mois qui sera affiché (éventuellement l'abréviation)
if trim( args.compact ) then
texteMois = listeMois[ mois ].abrev
end
mois = mois and mois:gsub( 'aout', 'août' )
local dataQualificatif, dataCat
Ligne 561 ⟶ 574 :
if jjour == 1 then
jjour = '<abbr class="abbr" title="premier">1<sup>er</sup></abbr>'
end
if trim( args.compact ) then
jmois = listeMois[ jmois ].abrev
end
if jannee ~= annee then
Ligne 590 ⟶ 606 :
-- s'il n'y a pas de lien sur le mois, il sera affiché avec le jour.
wikiListe.insert( wikiLien( lien, jour ) )
wikiListe.insert( wikiLien( lien, jour .. ' '.. moistexteMois ) )
end
iso.insert( 1, string.sub( '0' .. gjour, -2 ) )
Ligne 598 ⟶ 614 :
if mois then
if #wikiListe == 0 and annee == nil then
return moistexteMois
end
if args.nolinks then
if not args.masquerMois then
wikiListe.insert( moistexteMois )
end
else
Ligne 617 ⟶ 633 :
wikiListe.remove()
if not args.masquerMois then
wikiListe.insert( wikiLien( lien, moistexteMois ) )
end
elseif #wikiListe > 0 then
Ligne 624 ⟶ 640 :
elseif args.masquerAnnee then
-- s'il n'y a pas de jour et que l'année n'est pas affichée, on insère le mois seul.
wikiListe.insert( moistexteMois )
end
end
Ligne 657 ⟶ 673 :
if mois and #wikiListe == 0 then
-- si le mois n'a pas de lien et n'est pas affiché avec le jour, il est affiché avec l'année.
texteAnnee = moistexteMois .. ' ' .. texteAnnee
end
wikiListe.insert( wikiLien( lien, texteAnnee ) )
Ligne 871 ⟶ 887 :
end
jour = tonumber( jour )
if jour and jour <= liste_moislisteMois[numMois].nJour then
jour = '-' .. string.sub( '0' .. jour, -2 )
return annee .. mois .. jour
Ligne 1 187 ⟶ 1 203 :
sep = ' • '
for j = 1, 12 do
month = ucfirst( liste_moislisteMois[j][1].nom ) .. ' '
if j == 12 then sep = ''
end