Module:Wikidata/Dates
Apparence
La documentation de ce module est générée par le modèle {{Documentation module}}.
Les éditeurs peuvent travailler dans le bac à sable (créer).
Voir les statistiques d'appel depuis le wikicode sur l'outil wstat et les appels depuis d'autres modules.
-- sert à récupérer des données usuelles sur Wikidata (les fonctions élémentaires pour l'extraction des données se fait sur Module:Wikidata
-- ce module peut-être appelé par Module:InfoboxBuilder/Helpers qui les met en infobox
local wikidata = require( 'Module:Wikidata/Test')
local formatdate = require( 'Module:Date')
local p = {}
function p.keydate( frame ) -- récupère les valeurs contenues dans des qualificatifs, logique assez différente de pour les propriété principales
event = string.upper(frame.args[1])
claims = wikidata.getClaims({property = 'p793', targetvalue = event})
if not claims then return nil end -- TODO: fallback sur des événements proches ?
datetable = {} -- chaque entrée va contenir un "id" pour le classement chronologique and une "value" en langage nature
--[[ il peut y avoir plusieurs affirmations pertinentes, mais chacune ne doit contenir qu'une date, laisse la gestion des erreurs à Wikidata
les tables Wikidata commençant à 0, le moyen le plus simple pour vérifier qu'il n'y a qu'une seule valeur est if not xx[1] ]]--
for i, j in pairs(claims) do
if not j.qualifiers then break end
local qualif = j.qualifiers
if qualif['p585'] and not qualif['p585'][1] then
local id = wikidata.getRawvalue(qualif['p585'][0])
local value = wikidata.getDatavalue(qualif['p585'][0])
table.insert(datetable, {id= id, value= value})
elseif qualif['p580'] and qualif['p582'] and not qualif['p580'][1] and not qualif['p582'][1] then
local id = wikidata.getRawvalue(qualif['p580'][0])
local value = formatDate.range(wikidata.getDatavalue(qualif['p580'][0]), wikidata.getDatavalue(qualif['p582'][0]))
table.insert(datetable, {id= id, value= value})
elseif qualif['p580'] and not qualif['p580'][1] then
local id = wikidata.getRawvalue(qualif['p580'][0])
local value = wikidata.getDatavalue(qualif['p580'][0])
table.insert(datetable, {id= id, value= value})
elseif qualif['p582'] and not qualif['p582'][1] then
local id = wikidata.getRawvalue(qualif['p582'][0])
local value = wikidata.getDatavalue(qualif['p582'][0])
table.insert(datetable, {id= id, value= value})
else return nil
end
end
table.sort(datetable, function(a,b) return a.id < b.id end)
finaltable = {} -- new table without IDs (better solution ?)
for i, j in pairs(datetable) do
table.insert(finaltable, j.value)
end
return mw.text.listToText(finaltable)
end
return p