Aller au contenu

Module:Description

Une page de Wikipédia, l'encyclopédie libre.
Ceci est une version archivée de cette page, en date du 14 août 2015 à 00:14 et modifiée en dernier par TomT0m (discuter | contributions) (Nouvelle page : local wd = require("Module:Wikidata") local p= {} local proprietes = {instance_de= "P31", sous_classe_de = "P279" } local function descriptionManuelle(label, description) loca...). 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[voir] [modifier] [historique] [purger]

Utilisation

Fonctions exportables :

  • description(frame) – calcule une description textuelle d'une entité Wikidata (paramètre 1=identifiant de l'entité) à partir des déclaration génériques (nature, sous-classe, …) et de la description Wikidata.
  • description_par_prio(frame) – calcule une description textuelle d'une entité Wikidata. Si une description Wikidata est présente, l’afficher, sinon calculer la description auto.

Exemples

Pour des exemples, voir la page de test permettant de tester diverses modifications apportées.

local wd = require("Module:Wikidata")

local p= {}

local proprietes = {instance_de= "P31", sous_classe_de = "P279" }

local function descriptionManuelle(label, description)
	local res = nil
	if label ~= nil and description ~= nil then
		res =  label .. ": " .. description
	elseif label ~= nil then
		res =  label
	elseif description ~= nil then
		res =  description
	end
	return res
end	

local function tablelength(T)
  local count = 0
  for _ in pairs(T) do count = count + 1 end
  return count
end

local PropClass = {} -- the table representing the class, which will double as the metatable for the instances
PropClass.__index = PropClass -- failed table lookups on the instances should fallback to the class table, to get methods

function PropClass:new(init, o)
    o = {} 
    setmetatable(o, PropClass)
    
    o.value = init
    o.prop_set = {}
    
    for _, val in pairs(init) do
    	o.prop_set[val] = true
    end
    
    mw.log(o.prop_set)
    return o
end

function PropClass:is_in(val)
    return self.prop_set[key] ~= nil
end

local function descriptionAuto(entite)
	local autodesc = nil
	
	local props = PropClass:new(entite:getProperties())

	local instance = proprietes["instance_de"]
	local sousclasse = proprietes["sous_classe_de"]
	
	if props:is_in(instance) or 
	   props:is_in(sousclasse) then
		if props.is_in(instance) then
			insts = entite:getBestStatements(instance)
			autodesc = ""
			if tablelength(insts) > 0 then 
				for _, val in pairs(insts) do 
					autodesc = autodesc .. val 
				end
			end
		end
	end
	
	return autodesc
end

function p.decrireEntite(id)
	entite = mw.wikibase.getEntity(id)
	
	local description = mw.wikibase.description(id)
	
	local desc = descriptionManuelle(label, description)
	local autodesc = descriptionAuto(entite)
	if autodesc ~= nil then 
		desc = desc .. autodesc
	end
	return desc
end

p.PropClass = PropClass

return p