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

Contenu supprimé Contenu ajouté
_modeleDateParam : les paramètres peuvent être des 'number' (pour les appel depuis un autre module) ; validationJourMoisAnnee : suppresssion de tostring inutile, et correction double déclaration.
modeleDate : suppression de la gestion des décalages (incohérent avec les TemplateData, risque de bugs ici ou dans d'autre modules).
Ligne 394 :
end
-- vérification de l'absence d'un décalage
if annee and annee < 13 and not jour and ( tonumber( bmois ) or (not mois and tonumber( args[4] ) ) ) then
return false, Outils.erreur( 'année improbable (' .. annee .. ')' )
end
local resultat = {
jour = jour,
Ligne 405 ⟶ 410 :
end
 
function fun.determinationDecalage( args )
return d0
local decalage = 0
end
-- si pas de jour mais que args[2] est un mois on décale tout et on
 
-- n'affiche pas l'année
function fun._modeleDateParam( args )
local arg1, arg2, arg3 = trim( args[1] ), trim( args[2] ), trim( args[3] )
if arg1 == nil andreturn fun.determinationMoismodeleDateAnalyseJMA( args[3] ) then
decalage = 1
elseif arg1 == nil and arg2 == nil and arg3 and fun.determinationMois( args[4] ) then
decalage = 2
elseif arg1 == nil and arg2 and arg2:match( '[^ ./-][ ./-]+[^ ./-]' ) then
decalage = 'D'
elseif arg1 and arg3 == nil and ( arg1:match( '[^ ./-][ ./-]+[^ ./-]' ) or arg2 == nil or arg2:match( '[^ ./-][ ./-]+[^ ./-]' ) ) then
-- l'année est dans le premier paramètre
decalage = -2
elseif not tonumber( arg3 ) and fun.determinationMois( arg1 ) then
arg2 = arg2 and arg2:gsub( '%-$', '' )
if tonumber( arg2 ) and tonumber( arg2 ) > 12 then
-- le mois est dans le premier paramètre et l'année dans le deuxième
decalage = -1
end
end
return decalage
end
 
function fun._modeleDateParammodeleDateAnalyseJMA( args, decalage )
local function masquerParam( p ) -- sépare le signe moins final éventuel signifiant que le paramètre ne soit pas être affiché.
local function analyseParam( p )
local s
if type( p ) == 'number' then
returnif trim( p ) then
local dp, s = p:match( '^(.-)(%-?)%s*$' )
end
-- sépare le signe moins final éventuel signifiant que le paramètre ne soit pas être affiché.
p = trim( p )
if p then
local d, s = p:match( '^(.-)(%-?)$' )
if s == '-' then
return d, true
end
return d
end
return p, ( s == '-' or nil )
end
local paramtest, resultat, test, mM, mA
if decalage == 0 then
local arg1, arg2, arg3 = trimfun.nettoyageJour( args[1] ), trim( args[2] ), trim( args[3] )
elseifif type( arg1 ) == 'string' and arg3 == nil and ( arg1:match( '[^ ./-][ ./-]+[^ ./-]' ) or arg2 == nil or dataLiens[arg2:] or mw.ustring.match( arg2, '[^%a ./-][ ./-]+[^ ./-]%a' ) ) then
-- l'annéela date est dans le premier paramètre
test, resultat = fun.separationJourMoisAnnee( args[1]arg1 )
if ptest then
resultat.qualificatif = trim( args[ 4 + decalage ] )arg2
end
else
local param, masquerM, masquerA
param = { args[1] or args.jour }
param[2], mMmasquerM = analyseParammasquerParam( args[2] or args.mois )
param[3], mAmasquerA = analyseParammasquerParam( args[3] or args.annee or args['annee'] )
param[4] = masquerParam( args[4] )
test, resultat = fun.validationJourMoisAnnee( param )
elseif if decalage == -2test then
resultat.masquerAnnee = resultat.masquerAnnee or mAmasquerA
test, resultat = fun.separationJourMoisAnnee( args[1] )
resultat.masquerMois = resultat.masquerMois or mMmasquerM
elseif decalage == 'D' then
test, resultat.qualificatif = fun.separationJourMoisAnneetrim( args[24] )
mA = true
decalage = -1
else
param = { trim( args[ 1 + decalage ] ), trim( args[ 2 + decalage ] ), trim( args[ 3 + decalage ] ) }
test, resultat = fun.validationJourMoisAnnee( param )
if decalage > 0 then
mA = true
if decalage == 2 then
mM = true
end
end
end
if test then
resultat.qualificatif = trim( args[ 4 + decalage ] )
resultat.masquerAnnee = resultat.masquerAnnee or mA
resultat.masquerMois = resultat.masquerMois or mM
end
 
return test, resultat
end
Ligne 487 ⟶ 464 :
function fun.modeleDate( frame )
local args = Outils.extractArgs( frame )
local decalagetest, params = fun.determinationDecalagemodeleDateAnalyseJMA( args )
local testcat, resultat = fun._modeleDateParam( args, decalage )''
local cat = ''
if test then
local decalagelisteParam = 0{
for n, v in pairs( resultat ) do
qualificatif = 'qualificatif',
args[n] = v
age = 'âge', ['âge'] = 'âge',
naissance = 'naissance', mort = 'mort', ['décès'] = 'mort',
julien = 'julien', avJC = 'avJc',
nolinks = 'nolinks',
}
for n, v in pairs( resultatlisteParam ) do
params[v] = params[v] or args[n]
end
resultat = fun._modeleDate( argsparams )
 
if decalage ~= 0 and decalage ~= -2 then
cat = '[[Catégorie:Page utilisant le modèle Date avec un décalage|' .. decalage .. ']]' -- catégorisation temporaire
end
else
local namespaceCategorisation = { [0] = true, [4] = true, [10] = true, [14] = true, [100] = true }
Ligne 504 ⟶ 484 :
cat = '[[Catégorie:Page utilisant le modèle date avec une syntaxe erronée]]'
end
resultat = params .. cat
end
return ( resultat or '' ) .. cat
end