Module:Article du DHS/Bac à sable

 Documentation[créer] [purger]
local p = {}

-- fonction wd_dhs du module
-- appel : {{#invoke:Article du DHS|wd_dhs|wikidata_object_id}}
-- paramètre d'entrée 1 : QID d'une entité Wikidata
-- paramètre d'entrée 2 : Propriété à lire. La valeur peut être : 
--       P1476 : titre ; 
--       P577  : date de publication ;
--       P50   : auteur
-- paramètre de sortie  : Auteur de l'entrée du DHS de l'entité d'appel.
function p.wd_dhs(arguments)
	-- variables
	local dhs_property = 'P902'
	local wiki_langcode = mw.language.getContentLanguage().code
	-- retrieve object id
	local my_wikidata_object_id = arguments.args[1]
	local my_desired_property = arguments.args[2]
	
	-- fetch
	local my_wikidata_object = mw.wikibase.getEntity( my_wikidata_object_id )
	if (my_wikidata_object['claims'][dhs_property][1]['qualifiers'] ~= nil) and (my_wikidata_object['claims'][dhs_property][1]['qualifiers'][my_desired_property] ~= nil) then
		local my_wikidata_object_snaks = my_wikidata_object['claims'][dhs_property][1]['qualifiers'][my_desired_property]
		-- result
		if my_wikidata_object_snaks[1] ~= nil and my_wikidata_object_snaks[1].datatype == "monolingualtext" and my_wikidata_object_snaks[1].datavalue.value.language == wiki_langcode then
			return my_wikidata_object_snaks[1].datavalue.value.text
		elseif my_wikidata_object_snaks[2] ~= nil and my_wikidata_object_snaks[2].datatype == "monolingualtext" and my_wikidata_object_snaks[2].datavalue.value.language == wiki_langcode then
			return my_wikidata_object_snaks[2].datavalue.value.text
		elseif my_wikidata_object_snaks[3] ~= nil and my_wikidata_object_snaks[3].datatype == "monolingualtext" and my_wikidata_object_snaks[3].datavalue.value.language == wiki_langcode then
			return my_wikidata_object_snaks[3].datavalue.value.text
		elseif my_wikidata_object_snaks[4] ~= nil and my_wikidata_object_snaks[3].datatype == "monolingualtext" and my_wikidata_object_snaks[4].datavalue.value.language == wiki_langcode then
			return my_wikidata_object_snaks[4].datavalue.value.text
		else
			return mw.wikibase.renderSnaks( my_wikidata_object_snaks )
		end
		
    else	
    	return ''
    end
end

-- fonction page_qid du module
-- appel : {{#invoke:Article du DHS|page_qid|}}
-- paramètre d'entrie  : aucun
-- paramètre de sortie : le QID de l'entité Wikidata rattachée à la page Wikipédia
function p.page_qid(arguments)
	-- get wikidata QID from the current page name
	local my_wikidata_entity = mw.wikibase.getEntity()
	if not my_wikidata_entity then return nil else return my_wikidata_entity.id end
end

return p