Aller au contenu

Module:Utilitaire Wikidata

Un livre de Wikilivres.

La documentation pour ce module peut être créée à Module:Utilitaire Wikidata/Documentation

-- Module de requêtes Wikidata de plus haut niveau que Module:Wikidata
local p = {}
local wikidata = require "Module:Wikidata"

local function keydate (event)
	if type(event) ~= 'string' then
		return error('event should be a string starting with a P or S, datatype is ' .. type(event))
	end
	if string.sub(event, 1, 1) == 'Q' then -- on demande un élément utilisé dans P:P793 (événement clé)
		return  wikidata.getTheDate{property = 'P793', targetvalue = event, addcat = true, entity = item}
	elseif string.sub(event, 1, 1) == 'P'  then -- on demande une propriété
		return wikidata.formatAndCat{property = event, entity = item}
	else
		return error('event string should start with P or S, is "' .. event .. '"')
	end
end

function p.maindate(entity) -- à améliorer en utilisant module:Date complexe comme pour wikidata.getDate
	local startpoint = wikidata._formatStatements{property = 'P580', entity = entity, conjtype = 'or'}
	local endpoint = wikidata._formatStatements{property = 'P582', entity = entity, conjtype = 'or'}
	local str
	if startpoint or endpoint then
		str = (startpoint or '') .. ' - ' .. (endpoint or '')
		str = wikidata.addLinkback(str, entity, 'P582')
	end
	if startpoint then
		str = str .. wikidata.addtrackingcat('P580')
	end
	if endpoint then
		str = str .. wikidata.addtrackingcat('P582')
	end
	
	return str or wikidata.formatAndCat{property = 'P585', entity = entity, conjtype = 'or'}
end

function p.addLinkback(str, entity, property)
	return wikidata.addLinkback(str, entity, property)
end

function p.addtrackingcat(prop, cat)
	return wikidata.addtrackingcat(prop, cat)
end

function p.keydate(events)
	if type(events) == 'nil' then
		return nil
	end
	if type(events) == 'string' then
		return keydate(events)
	elseif type(events) == 'table' then
		for i, j in pairs(events) do
			local val = keydate(j)
			if val then
				return val
			end
		end
	end
end
function p.getClaims(args) 
	return wikidata.getClaims(args)
end
function p._formatStatements(args)
	return wikidata._formatStatements(args)
end
function p.formatAndCat(args)
	return wikidata.formatAndCat(args)
end

return p