Aller au contenu

Module:Essai

Une page de Wikipédia, l'encyclopédie libre.
Ceci est une version archivée de cette page, en date du 12 janvier 2016 à 23:10 et modifiée en dernier par Hexasoft (discuter | contributions). Elle peut contenir des erreurs, des inexactitudes ou des contenus vandalisés non présents dans la version actuelle.

 Documentation[créer] [purger]
--[[
test de fonctionnalités. J'effacerai moi-même lorsque ce sera
terminé
--]]

local p = {}

local wd = require 'Module:Wikidata'

--[[ table des métiers (WD) que l'on veut gérer
  cette table est indexée par le code WD de l'élément recherché, et
  contient une table avec (à faire évoluer) :
    'catégorie' (la catégorie à associer)
    'infobox' (l'infobox dédiée)
    'texte' (un libélé utilisable)
]]--
p.association = {
  ["Q483501"] = { ["catégorie"] = "Artiste", ["infobox"] = "Infobox Artiste", ["texte"] = "[[artiste]]" },
  ["Q1028181"] = { ["catégorie"] = "Peintre", ["infobox"] = "Infobox Peintre", ["texte"] = "[[peintre]]" },
  ["Q488205"] = { ["catégorie"] = "Auteur-compositeur-interprète", ["infobox"] = "Infobox Musique (artiste)", ["texte"] = "[[auteur-compositeur-interprète]]" } 
}


--[[
  fonction retournant une liste des éléments de la table 'p.association'
  trouvés à partir de la propriété 'property' pour l'entité 'entity' (ou l'article
  courant si 'entity' vaut 'nil')
  si une propriété présente n'est pas référencée ???
]]--
function p.propriete_parente(property, value, entity)
	return nil	
end

--[[
  fonction retournant true si la valeur 'value' est présente dans la liste des
  propriétés 'property' pour l'entité 'entity' (ou l'article courant si 'entity'
  vaut 'nil')
  retourne false sinon
]]--
function p.presence_propriete(property, value, entity)
	local args = { ["property"] = property, link = "-", displayformat = "raw" }
	if (entity ~= nil) then
		args["entity"] = entity
	end
	local res = wd.stringTable(args)
	
	-- pas de résultat, cette propriété WD est absente je présume
	if (res == nil) then
		return false
	end
	-- on parcours les résultats pour voir si celle qu'on veut est là
	for k, v in pairs(res) do
		if (v == value) then
			return true  -- trouvé
		end
	end
	return false -- pas trouvé
end

--[[
  fonction qui retourne true si un élément wikidata existe pour l'article
  courant (ou l'élément 'entity' si différent de 'nil') et false sinon
  Note : le paramètre 'entity' n'a pas de sens, c'est juste pour du test. En
         effet si on a une 'entity' c'est que ça existe…
]]--
function p.a_wikidata(entity)
	if (entity ~= nil) then
		if (mw.wikibase.getEntity() ~= nil) then
			return true
		else
			return false
		end
	else
		if (mw.wikibase.getEntity(entity) ~= nil) then
			return true
		else
			return false
		end
	end
end


function p.traite(entity, nom)
	local ret = "Pour " .. nom .. ":<br/>"
	local t1 = p.a_wikidata(entity)
	if (t1) then
		ret = ret .. "possède une entrée WD<br/>"
		local t2 = p.presence_propriete("P31", "Q5", "Q392")
		if (t2) then
			ret = ret .. "c'est un être humain<br/>"
			-- suite : les métiers
		else
			ret = ret .. "ce n'est pas un être humain<br/>"
		end
	else
		ret = ret .. "n'a pas d'entrée WD<br/>"
	end
	ret = ret .. "fin test pour " .. nom .. ".<br/>"
	return ret
end


function p.essai(frame)
	local ret = ""
	-- test sur l'article en cours (page de discussion)
	ret = ret .. p.traite(nil, "[[Discussion module:Essai") -- traite la page en cours
	ret = ret .. p.traite("Q392", "[[Bob Dylan]]") -- traite Bob Dylan

	return ret
end




return p