Module:Matériau : Différence entre versions

De Lagny-sur-Marne Wiki
Aller à : navigation, rechercher
m
Ligne 2 : Ligne 2 :
 
local wikidata = require('Module:Wikidata')
 
local wikidata = require('Module:Wikidata')
 
local linguistic = require('Module:Linguistique')
 
local linguistic = require('Module:Linguistique')
 +
 +
local speciallabels = { -- valeur du libellé défini ici plutôt que dans l'élément Wikidata (pour adaptation au contexte, léger gain de performance)
 +
Q174705 = '[[Peinture à l\'huile|huile]]'
 +
}
  
 
function p.formatFromItem(item)
 
function p.formatFromItem(item)
Ligne 12 : Ligne 16 :
 
local supportvals = {} -- comme dans huile ''sur toile''
 
local supportvals = {} -- comme dans huile ''sur toile''
 
for i, j in pairs(materials) do
 
for i, j in pairs(materials) do
local val = wikidata.formatSnak(j.mainsnak)
+
local val = wikidata.formatSnak(j.mainsnak, {speciallabels = speciallabels})
 
local typ = 'main' -- changé en 'support' s'il faut la mettre sur supportstr
 
local typ = 'main' -- changé en 'support' s'il faut la mettre sur supportstr
 
if j.qualifiers and j.qualifiers.P518 then -- P518: "s'applique à "
 
if j.qualifiers and j.qualifiers.P518 then -- P518: "s'applique à "
Ligne 26 : Ligne 30 :
 
table.insert(mainvals, val)
 
table.insert(mainvals, val)
 
end
 
end
local main = (linguistic.conj(mainvals) or '') .. '[[Catégorie:Page utilisant des données de Wikidata/P186]]'
+
end
local support = linguistic.conj(supportvals)
+
if support then
+
local main = (linguistic.conj(mainvals) or '') .. '[[Catégorie:Page utilisant des données de Wikidata/P186]]'
return main .. ' sur ' .. support
+
local support = linguistic.conj(supportvals)
else
+
if support then
return main
+
return main .. ' sur ' .. support
end
+
else
 +
return main
 
end
 
end
 
end
 
end
 
return p
 
return p

Version du 10 mars 2015 à 08:08

La documentation pour ce module peut être créée à Module:Matériau/doc

local p = {}
local wikidata = require('Module:Wikidata')
local linguistic = require('Module:Linguistique')

local speciallabels = { -- valeur du libellé défini ici plutôt que dans l'élément Wikidata (pour adaptation au contexte, léger gain de performance)
	Q174705 = '[[Peinture à l\'huile|huile]]'
}

function p.formatFromItem(item)
	-- affiche le matériau en fonction de Property:P186, et de son qualificatif P518 ('s'applique à')
	local materials = wikidata.getClaims{item = item, property = 'P186'}
	if not materials then
		return nil
	end
	local mainvals = {}
	local supportvals = {} -- comme dans huile ''sur toile''
	for i, j in pairs(materials) do
		local val = wikidata.formatSnak(j.mainsnak, {speciallabels = speciallabels})
		local typ = 'main' -- changé en 'support' s'il faut la mettre sur supportstr
		if j.qualifiers and j.qualifiers.P518 then -- P518: "s'applique à "
			if wikidata.getRawvalue(j.qualifiers.P518[1]) == 'Q861259'  then
				typ = 'support'
			else
				val = val ..linguistic.inparentheses(wikidata.formatSnak(j.qualifiers.P518[1], {link = '-'})) -- enlève le lien qui fait moche ici
			end
		end
		if typ == 'support' then
			table.insert(supportvals, val)
		else
			table.insert(mainvals, val)
		end
	end
	
	local main = (linguistic.conj(mainvals) or '') .. '[[Catégorie:Page utilisant des données de Wikidata/P186]]'
	local support = linguistic.conj(supportvals)
	if support then
		return main .. ' sur ' .. support
	else
		return main
	end
end
return p