Module:Infobox/Fonctions/Personne
Apparence
La documentation pour ce module peut être créée à Module:Infobox/Fonctions/Personne/Documentation
-- Functions utilisées par les infobox personnes
local p = {}
local wikidata = require('Module:Wikidata')
local general = require('Module:Infobox/Fonctions')
local gender -- set by setgender
local datelinks = { -- lien vers le domaine d'activité approprié
Q483501 = 'en arts plastiques', -- artiste
Q1028181 = 'en arts plastiques', -- peintre
Q1281618 = 'en arts plastiques', -- sculpteur
}
local function getdatetopic(item) -- obtien le lien le plus approprié pour une date en fonction de la profession
local val = wikidata._formatStatements{displayformat = 'raw', item = item, property = 'P106', numval = 1}
return datelinks[val]
end
-- ========== Fonctions d'aide ====================================
local function dateandplace(thedate, theplace)
if thedate and theplace then
return thedate .. '<br />' .. theplace
else
return thedate or theplace --retourne tout ce qu’il trouve
end
end
local function setgender(localdata, item) -- établit la valeur de la variable "gender" qui sert à adapter la grammaire au sexe de la personne
if localdata['sexe'] or localdata['genre'] then
gendertable = {f = 'f' , ['féminin'] = 'f', femme = 'f', homme = 'm', m = 'm', masculin = 'm'}
gender = gendertable[(localdata['sexe'] or localdata['genre'])]
if not gender then gender = '?' end
return
end
local g = wikidata._formatStatements{item= item, property = 'P21', format = 'raw'}
if g == 'Q6581072' then
gender = 'f'
elseif g == 'Q6581097' then
gender = 'm'
else
gender = '?'
end
end
--Titre
function p.title()
return {
type = 'title',
value = 'nom',
icon = 'Picto_infobox_manwoman.png',
}
end
--Image
function p.mainimage()
return general.mainimage('Article à illustrer/Biographie', '240px')
end
--Naissance, décès
function p.birth() -- date de naissance en première ligne, lieu de naissance en deuxième
return {
type = 'mixed',
label = 'Naissance',
value =
function(localdata, item)
local thedate = localdata['date de naissance'] or localdata['naissance']
local theplace = localdata['lieu de naissance']
if not thedate then
local link = getdatetopic(item)
thedate = wikidata._formatAndCat({item = item, property= 'P569', rank = 'best', conjtype= ' ou ', linktopic = link})
if not theplace then
-- mis ici pour ne pas récupérer le lieu Wikidata si la date ne vient pas de Wikidata (risque de collision)
theplace = wikidata._formatAndCat({item = item, property= 'P19', rank = 'best', conjtype= ' ou '})
end
end
return dateandplace(thedate, theplace)
end
}
end
function p.death() -- même fonctionnement que la fonction p.birth
return {
type = 'mixed',
label = 'Décès',
value =
function(localdata, item)
local thedate = localdata['date de décès'] or localdata['décès']
local theplace = localdata['lieu de décès']
if not thedate then
local link = getdatetopic(item)
thedate = wikidata._formatAndCat{item= item, property= 'P570', rank = 'best', conjtype= ' ou ', linktopic = link}
if not theplace then
-- mis ici pour ne pas récupérer le lieu Wikidata si la date ne vient pas de Wikidata (risque de collision)
theplace = wikidata._formatAndCat({item = item, property= 'P20', rank = 'best', conjtype= ' ou '})
end
end
return dateandplace(thedate, theplace)
end
}
end
function p.nationality() --
return {
type = 'mixed',
label = 'Nationalité',
value = 'nationalité',
-- property = 'P27' que faire avec les données Wikidata Parfois, elle peuvent paraitre discutable du type Platon : "Athènes" ou "Goethe: Allemagne".
}
end
-- parcours professionel
function p.education() -- à améliorer
return {
type = 'mixed',
label = 'Formation',
value = function(localdata) return locadata['éducation'] or localdata['formation'] end,
wikidata = function(item) return wikidata._formatAndCat{item=item, property = 'P69', showdate = true, conjtype = '<br />'} end
}
end
function p.awards() -- à améliorer
return {
type = 'mixed',
label = 'Distinctions',
value = function(localdata) return localdata['prix'] or localdata['récompenses'] or localdata['distinctions'] end,
wikidata = function(item) return wikidata._formatAndCat{item = item, property= 'P166', sorttype= 'chronological' , showdate= true, conjtype= '<br />'} end,
}
end
-- Influences
function p.influencedby()
return {
type = 'mixed',
label =
function(localdata, item)
if not gender then setgender(localdata, item) end
if gender == 'f' then
return 'Influencée par'
elseif gender == 'm' then
return 'Influencé par'
else
return 'Influencé(e) par'
end
end,
value = 'influencé par',
property = 'P737',
}
end
function p.influenced()
return {
type = 'mixed',
label = 'A influencé',
value = function(localdata) return localdata['a influencé'] or localdata['influence de'] end,
property = 'P738',
}
end
-- Signature
function p.signature(default)
return {
type = 'images',
imageparameters = {'signature'},
defaultimage = {default},
defaultsize = '150px',
captionparameter = 'légende signature',
defaultcaption = 'signature',
property = 'P109',
numval = 1
}
end
--== Site web
function p.website()
return p.website()
end
return p