Aller au contenu

« Module:Infobox/Fromage » : différence entre les versions

Une page de Wikipédia, l'encyclopédie libre.
Contenu supprimé Contenu ajouté
Zolo (discuter | contributions)
ajoute une ligne fabricant pour les fromages industriels (Takamaka (fromage)‎), cache la ligne pâte lorsqu'il n'y a pas de données
pâte : légère simplification du code + gestion plus robuste des majuscules ; pas de mise en majuscule automatique
 
(25 versions intermédiaires par 5 utilisateurs non affichées)
Ligne 1 : Ligne 1 :
local cheese = require "Module:Infobox/Fonctions"
local cheese = require "Module:Infobox/Fonctions"
local wikidata = require "Module:Wikidata"
local wikidata = require "Module:Wikidata"
local dates = require "Module:Wikidata/Dates"
local linguistic = require "Module:Linguistique"


return {
return {
maincolor = '#FFFF77',
maincolor = '#FFFF77',
parts = {
parts = {
cheese.title(),
{
cheese.mainimage('Article à illustrer Fromage'),
type = 'title',
value = 'nom',
wikidata = function(item)
local label = item:getLabel('fr')
return label:gsub("^%l", string.upper)
end
},
cheese.mainimage(),
{
{
type = 'table',
type = 'table',
rows = {
rows = {
{
{
type = 'mixed',
type = 'row',
label = 'Pays d\'origine',
label = 'Pays d’origine',
value = 'pays',
value = 'pays',
property = 'P495'
property = 'P495'
},
},
{
{
type = 'mixed',
type = 'row',
label = 'Région',
label = 'Région',
value = 'lieu',
value = 'lieu',
Ligne 31 : Ligne 24 :
},
},
{
{
type = 'mixed',
type = 'row',
label = 'Fabricant',
label = 'Fabricant',
value = 'fabricant',
value = 'fabricant',
Ligne 37 : Ligne 30 :
},
},
{
{
type = 'mixed',
type = 'row',
label = 'Lait',
label = 'Lait',
value = 'lait',
value = 'lait',
wikidata = function(localdata, item)
wikidata = {
property = 'P186', -- récupère la propriété P186 (matériau)
local val = wikidata._formatAndCat({item=item, property= 'P186', qualifiervalue = {'Q8495'}, qualifier = 'P518'})
-- récupère la propriété P186 (matériau) seulement si elle a le qualificatif "s'applique à la partie : lait"
qualifier = 'P518', -- seulement si elle a le qualificatif "s'applique à la partie"
if val then -- retire "lait de" du libellé, un peu lourd
qualifiervalue = {'Q8495'}, -- et que cette partie est le lait"
labelformat = function(id) -- enlève "lait" du libellé, un peu lourd
return mw.ustring.gsub(val, "\|lait de", "\|")
local label = mw.wikibase.label(id)
end
return linguistic.keepcomplement(label, "lait")
end
end
}
},
},
{
{
type = 'mixed',
type = 'row',
label = 'Pâte',
label = 'Pâte',
value = 'pâte',
value = 'pâte',
wikidata = function(item)
wikidata = {
property = 'P279',
-- Pour déterminer le type de pâte du fromage sur Wikidata, récupération des valeurs éventuelles
-- de la propriété P279 ("sous-classe de") dont le label contiennent "pâte"
condition = function(claim) -- n'accepte que les valeurs de P279 ("sous-classe" de) qui contiennent le mot "pâte"
local paste_list = {}
local str = wikidata.formatStatement(claim)
if string.match(str:lower(), "pâte") then
local claims = wikidata.getClaims({item = item, property = 'P279'})
if claims then
return true
for claim_key, claim_value in pairs(claims) do
statement = wikidata.formatStatement(claim_value)
if string.match(statement:lower(), "pâte") then
statement = mw.ustring.gsub(statement, "\|fromage à pâte", "\|pâte")
table.insert(paste_list, statement)
end
end
end
end
end,
labelformat2 = function(label) -- enlève "fromage à pâte de l'affichage
if #paste_list > 0 then
return mw.text.listToText(paste_list, "<br />", "<br />")
return mw.ustring.gsub(linguistic.lcfirst(label), "fromage à pâte ", "")
end
end,
return false
ucfirst = '-'
end
}
},
},
{
{
type = 'mixed',
type = 'row',
label = 'Appellation',
label = 'Appellation',
value = 'aoc',
value = 'aoc',
wikidata = wikidata.formatAndCat{item = item, property = 'P1389', showdate=true, conjtype = '<br />'}
wikidata = {property = 'P1389', showdate = true, conjtype = '<br />', textformat = 'minimum'}
-- P1389 ("certificat de produit")
-- P1389 ("certificat de produit")
},

{
type = 'row',
label = 'Nommé en référence à',
value = 'nommé selon',
property = 'P138'
},
{
type = 'row',
label = 'Volume commercialisé',
value = 'quantité',
wikidata = {property = 'P1092', showdate = true, rank = 'best', conjtype = '<br />', textformat = 'minimum'}
},
{
type = 'row',
label = 'Aire de production',
value = 'superficie',
wikidata = {property = 'P2046', showdate = true, conjtype = '<br />', textformat = 'minimum'}
},
{
type = 'row',
label = 'Producteurs de lait',
value = 'producteurs', -- remplissage manuel en attendant que Wikidata le gère
},
{
type = 'row',
label = 'Transformateurs',
value = 'transformateurs', -- remplissage manuel en attendant que Wikidata le gère
},
{
type = 'row',
label = 'Affineurs',
value = 'affineurs', -- remplissage manuel en attendant que Wikidata le gère
}
}
}
}

Dernière version du 13 mars 2023 à 21:54

 Documentation[voir] [modifier] [historique] [purger]

Cette page définit un module d'infobox. Pour les conseils sur l'usage de ce module, voyez Modèle:Infobox Fromage.


local cheese = require "Module:Infobox/Fonctions"
local wikidata = require "Module:Wikidata"
local linguistic = require "Module:Linguistique"

return {
	maincolor = '#FFFF77',
	parts = {
		cheese.title(),
		cheese.mainimage('Article à illustrer Fromage'),
		{
			type	= 'table',
			rows	= {
				{
					type		= 'row',
					label		= 'Pays d’origine',
					value		= 'pays',
					property	= 'P495'
				},
				{
					type		= 'row',
					label		= 'Région',
					value		= 'lieu',
					property	= 'P1071'
				},
				{
					type		= 'row',
					label		= 'Fabricant',
					value		= 'fabricant',
					property	= 'P176'
				},
				{
					type		= 'row',
					label		= 'Lait',
					value		= 'lait',
					wikidata	= {
						property = 'P186', -- récupère la propriété P186 (matériau) 
						qualifier = 'P518', -- seulement si elle a le qualificatif "s'applique à la partie"
						qualifiervalue = {'Q8495'}, -- et que cette partie est le lait"
						labelformat = function(id) -- enlève "lait" du libellé, un peu lourd
							local label = mw.wikibase.label(id)
							return linguistic.keepcomplement(label, "lait")
							end
						}
				},
				{
					type		= 'row',
					label		= 'Pâte',
					value		= 'pâte',
					wikidata    = {
						property = 'P279',
						condition = function(claim) -- n'accepte que les valeurs de P279 ("sous-classe" de) qui contiennent le mot "pâte"
							local str = wikidata.formatStatement(claim)
							if string.match(str:lower(), "pâte") then
								return true
							end
						end,
						labelformat2 = function(label) -- enlève "fromage à pâte de l'affichage
							return mw.ustring.gsub(linguistic.lcfirst(label), "fromage à pâte ", "")
						end,
						ucfirst = '-'
						}
				},
				{
					type		= 'row',
					label		= 'Appellation',
					value		= 'aoc',
					wikidata 	= {property = 'P1389', showdate = true, conjtype = '<br />', textformat = 'minimum'}
						-- P1389 ("certificat de produit")
				},
				{
					type		= 'row',
					label		= 'Nommé en référence à',
					value		= 'nommé selon',
				        property	= 'P138'
				},
				{
					type		= 'row',
					label		= 'Volume commercialisé',
					value		= 'quantité',
					wikidata 	= {property = 'P1092', showdate = true, rank = 'best', conjtype = '<br />', textformat = 'minimum'}
				},
				{
					type		= 'row',
					label		= 'Aire de production',
					value		= 'superficie',
					wikidata 	= {property = 'P2046', showdate = true, conjtype = '<br />', textformat = 'minimum'}
				},
				{
					type		= 'row',
					label		= 'Producteurs de lait',
					value		= 'producteurs', -- remplissage manuel en attendant que Wikidata le gère
				},
				{
					type		= 'row',
					label		= 'Transformateurs',
					value		= 'transformateurs', -- remplissage manuel en attendant que Wikidata le gère
				},
				{
					type		= 'row',
					label		= 'Affineurs',
					value		= 'affineurs', -- remplissage manuel en attendant que Wikidata le gère
				}
			}
		}
	}
}