« Module:Date » : différence entre les versions
Contenu supprimé Contenu ajouté
il existe une variable modelePremier, mieux vaut l'utiliser partout où elle est adaptée |
fusion de modeleDateAnalyseJMA dans modeleDate ; modeleDate : validation des paramètres booléen avec Yesno ; retrait de TableBuilder ; mise en page et mise à jour commentaires |
||
Ligne 1 :
local fun = {}
local
local
-- chargement de la base de donnée répertoriant certaines pages existant ou n'existant pas pour éviter les "ifexist".
local dataLiens
Ligne 304 :
---
-- validationJourMoisAnnee vérifie les paramètres correspondent à une date valide.
-- la date peut être
-- La fonction retourne true suivit d'une table avec la date en paramètres nommé (sans accent sur année)
-- ou false suivit d'un message d'erreur.
Ligne 413 ⟶ 412 :
end
-- analyse des paramètres 1, 2, 3 et 4 ▼
local function masquerParam( p )▼
-- sépare le signe moins final éventuel signifiant que le paramètre ne soit pas être affiché.▼
if trim( p ) then▼
p, s = p:match( '^(.-)(%-?)%s*$' )▼
end▼
return p, ( s == '-' or nil )▼
end▼
local test, resultat▼
local arg1, arg2, arg3 = fun.nettoyageJour( args[1] ), trim( args[2] ), trim( args[3] )▼
if type( arg1 ) == 'string' and arg3 == nil and ( arg1:match( '[^ ./-][ ./-]+[^ ./-]' ) or arg2 == nil or dataLiens[arg2] or mw.ustring.match( arg2, '%a %a' ) ) then▼
-- la date est dans le premier paramètre▼
test, resultat = fun.separationJourMoisAnnee( arg1 )▼
if test then▼
resultat.qualificatif = arg2▼
end▼
else▼
param = { args[1] or args.jour }▼
param[2], masquerM = masquerParam( args[2] or args.mois )▼
param[3], masquerA = masquerParam( args[3] or args.annee or args['annee'] )▼
test, resultat = fun.validationJourMoisAnnee( param )▼
if test then▼
resultat.qualificatif = trim( args[4] )▼
end▼
end▼
end▼
---
Ligne 467 ⟶ 429 :
function fun.modeleDate( frame )
local args = Outils.extractArgs( frame )
local cat, resultat = ''
-- analyse des paramètres non nommé (ou paramètres de la date jour, mois annee)
▲ local arg1, arg2, arg3 = fun.nettoyageJour( args[1] ), trim( args[2] ), trim( args[3] )
▲ if type( arg1 ) == 'string' and arg3 == nil and ( arg1:match( '[^ ./-][ ./-]+[^ ./-]' ) or arg2 == nil or dataLiens[arg2] or mw.ustring.match( arg2, '%a %a' ) ) then
▲ -- la date est dans le premier paramètre
▲ end
▲ else
if type( p ) ~= 'string' then
return p, nil
▲ end
▲ end
▲
mw.logObject( cleanArgs )
▲ if test then
▲ end
▲ end
if test then
-- julien peut avoir trois valeurs: inactif, format standard (true), format court
local listeParam = {
▲ qualificatif = 'qualificatif',
age = 'âge',
['âge'] = 'âge',
Ligne 477 ⟶ 471 :
mort = 'mort',
['décès'] = 'mort',
avJC = 'avJC',
nolinks = 'nolinks',
Ligne 484 ⟶ 477 :
}
for n, v in pairs( listeParam ) do
params[v] = params[v] or
end
-- sortie pour les tests unitaire, ou pour débuger
return params
resultat = fun._modeleDate( params )
Ligne 495 ⟶ 494 :
resultat = params .. cat
end
return resultat or ''
end
Ligne 515 :
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 '' ) )
if annee and jour then
local amj = annee * 10000 + numMois * 100 + jour
Ligne 525 ⟶ 524 :
gannee, gmois, gjour = fun.julianToGregorian( annee + 1, numMois, jour )
end
elseif args.julien
gannee, gmois, gjour = fun.julianToGregorian( annee, numMois, jour )
annee, mois, jour = gannee, listeMois[gmois].nom, gjour
Ligne 539 ⟶ 538 :
-- Déclarations des variables
local wikiListe =
local iso =
local texteMois = mois -- texte du mois qui sera affiché (éventuellement l'abréviation)
if args.compact then
Ligne 577 ⟶ 576 :
jjour = modelePremier
end
if
jmois = listeMois[ jmois ].abrev
end
Ligne 596 ⟶ 595 :
jour = modelePremier
end
else
qualifJour = dataQualificatif.jour and dataQualificatif.qualificatif
Ligne 607 ⟶ 606 :
end
-- s'il n'y a pas de lien sur le mois, il sera affiché avec le jour.
end
end
Ligne 620 ⟶ 619 :
if args.nolinks then
if not args.masquerMois then
end
else
Ligne 633 ⟶ 632 :
if lien or args.masquerMois then
-- s'il y a un lien on retire le lien affichant 'jour mois' pour ajouter '[[mois annee|mois']]
if not args.masquerMois then
end
elseif #wikiListe > 0 then
-- sinon on retire le lien affichant 'jour' pour ne garder que le lien 'jour mois'
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.
end
end
if gmois then
end
end
if
end
Ligne 670 ⟶ 669 :
end
if args.nolinks then -- seulement si on doit l'affichée
else
lien = existDate( dataQualificatif, annee ) or existDate( dataCat, annee ) or lien or annee
Ligne 677 ⟶ 676 :
texteAnnee = texteMois .. ' ' .. texteAnnee
end
end
end
if gannee > 999 then
elseif gannee > -1 then
elseif gannee > -999 then
-- calendrier grégorien proleptique avec année 0.
else
end
end
if
end
Ligne 711 ⟶ 710 :
-- compilation du résultat
local wikiTexte =
local isoTexte =
-- On ajoute un peu de sémantique.
Ligne 755 ⟶ 754 :
-- qualificatif = suffixe des page de date à lier (exemple : en musique)
-- nolinks : n'affiche pas de lien
--
-- préfixe sans jour : préfixe à afficher s'il n'y a pas de jour (par défaut : '')
function fun.dateInfobox( frame )
Ligne 763 ⟶ 762 :
end
-- analyseDate sépare la date du contenu qui suit, supprime les liens, et retourne si possible un table avec jour mois année
local function analyseDate( d )
if trim( d ) then
-- supprime les liens▼
local analyse = d:match( ' ou ') or d:match( 'entre ' ) or d:match( 'vers ' ) or d:match( 'après ' ) or d:match( 'avant ' )
if analyse then
Ligne 771 ⟶ 770 :
end
analyse = d:match( 'datetime="([%d-]+)"' ) or d
-- sépare la date (avec ses liens) d'une référence ou contenu commençant par un espace)
local debut, fin = analyse:match( '(.-%d%d%d%]*%-?)([\127 ].+)' )
if not debut then
-- sépare la date du contenu commençant par <br>
debut, fin = analyse:match( '(.-%d%d%d%]*%-?)(<br ?/?>.+)' )
end
analyse = debut or analyse
analyse = analyse:gsub(
'%[%[([^%[%]|]*)|?([^%[%]]*)%]%]',
function ( l, t )
return trim( t ) or l
end
)
local t, r = fun.separationJourMoisAnnee( analyse )
if t then
Ligne 799 ⟶ 806 :
end
local naissance = args[1]:match( '^n' ) == 'n'
local mort = args[1]:match( '^m' ) or args[1]:match( 'décès' )
local affichageDate, qualificatif = args[2], args[4]
Ligne 844 ⟶ 851 :
local age, prefixAge, suffixAge, calculAge = '', ' <span class="noprint">(', ')</span>', nil
if naissance and
dateNaissance and not dateMort and type( dateNaissance ) == 'table' then calculAge = fun.age( dateNaissance.annee, dateNaissance.numMois, dateNaissance.jour )
if calculAge and calculAge > 120 then
calculAge = nil
end
elseif mort and
dateNaissance and dateMort and type( dateNaissance ) == 'table' and type( dateMort ) == 'table' then calculAge = fun.age(
dateNaissance.annee, dateNaissance.numMois, dateNaissance.jour, dateMort.annee, dateMort.numMois, dateMort.jour )
prefixAge = ' (à '
suffixAge = ')'
Ligne 1 166 ⟶ 1 189 :
local alias = frame.args.alias == 'oui'
local dataLink = mw.loadData( 'Module:Date/Data' )
local wikiList =
local currentYear = tonumber( os.date( '%Y' ) )
local columns = '<div style="-moz-column-width:5em;-webkit-column-width:5em;column-width:5em;-moz-column-gap:1em;-webkit-column-gap:1em;column-gap:1em;text-align:left;">'
Ligne 1 202 ⟶ 1 225 :
if initialYear then
-- ajout de lien vers les pages annuelles de l'année en court + 5 jusqu'à initialYear
local fieldLink = ' ' .. field
if category == 'cat' then
Ligne 1 208 ⟶ 1 231 :
end
for year = ( currentYear + 5 ), initialYear, -1 do
end
if monthLinks then
-- insertstion de liens vers les mois de l'année en court + 1 jusqu'à monthInitialYear
local month, sep
for year = ( currentYear + 1 ), monthInitialYear, -1 do
sep = ' • '
for j = 1, 12 do
Ligne 1 223 ⟶ 1 246 :
if j == 12 then sep = ''
end
end
end
-- insertion de quelques date pour tester les éphémérides
end
end
|