Aller au contenu

Module:Wikidata/Dates

Une page de Wikipédia, l'encyclopédie libre.
Ceci est une version archivée de cette page, en date du 3 octobre 2013 à 16:27 et modifiée en dernier par Zolo (discuter | contributions) (Nouvelle page : -- 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é ...). Elle peut contenir des erreurs, des inexactitudes ou des contenus vandalisés non présents dans la version actuelle.
(diff) ← Version précédente | Voir la version actuelle (diff) | Version suivante → (diff)

 Documentation[créer] [purger]
-- 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