Μετάβαση στο περιεχόμενο

Module:Βασική ημερομηνία

Ασό Βικιπαίδεια

Documentation for this module may be created at Module:Βασική ημερομηνία/τεκμηρίωση

-- en développement (à éventuellement généraliser et intégrer dans Module:Wikidata)
local wikidata = require( 'Module:Wikidata')
local formatdate = require( 'Module:Date')
local h = require( 'Module:Wikidata/Dates')
local p = {}

function p.test(frame)
	return h.keydate(frame.args['event'])
end

function p.keydate(frame) -- should be possible to provide a list of "fallback" events
	event = string.upper(frame.args[1])-- to do: make it possible to provide a list of "fallback" events
	claims = wikidata.getClaims({property = 'p793', targetvalue = event})
	if not claims then
		return nil
	end
	datetable = {}
	for i, j in pairs(claims) do
		if j.qualifiers then
		 	if  j.qualifiers['p585'] then --property:date
				for k, l in pairs(j.qualifiers['p585']) do 
					table.insert(datetable, {id= wikidata.getDatavalue(l, 'raw'), value = wikidata.getDatavalue(l)})
				end	
			elseif j.qualifiers['p580'] then --property:date de début
				if j.qualifiers['p582'] then -- if start date and end date in the same claim, they must be unique
					table.insert(datetable, {id= wikidata.getDatavalue(j.qualifiers['p580'][0], 'raw'), value = wikidata.getDatavalue(j.qualifiers['p580'][0]) .. '-' .. wikidata.getDatavalue(j.qualifiers['p582'][0])})
				else
					for k, l in pairs(j.qualifiers['p580']) do 
						table.insert(datetable, {id= wikidata.getDatavalue(l, 'raw'),  value = 'à partir de : ' .. wikidata.getDatavalue(l)})
					end
				end
			elseif j.qualifiers['p582'] then --property:date de fin
				for k, l in pairs(j.qualifiers['p582']) do 
					table.insert(datetable, {id= wikidata.getDatavalue(l, 'raw'), value = 'jusqu\'à ' .. wikidata.getDatavalue(l)})
				end
			end
		end
	end 
	datetext = ''
	table.sort(datetable, function(a,b) return a.id < b.id end)
	finaltable = {}
	for i, j in pairs(datetable) do
		table.insert(finaltable, j.value)
	end
	return mw.text.listToText(finaltable)
end
return p