Module:MiniBio
Apparence
[voir] [modifier] [historique] [purger]
Utilisation
Fonction exportable :
categorise()
– Retourne les catégories de vie (naissance,décès…) d'une personne (utilisée par le modèle Catégorise Personne).
Autres fonctions :
trim()
– Supprime les espaces en début et fin d'une chaîne
Modules externes et autres éléments dont ce module a besoin pour fonctionner :
Module:Outils
– gestion paramètres du module.Module:Date
– gestion des dates.Module:Date_complexe
– gestion avancée des dates.Module:Yesno
– transforme un paramètre"oui/non/yes/no/..." en booléenmw.ustring
- gestion des chaînes de caractères UTF8mw.text
- gestion des chaînes de caractèresmw.wikibase
- accès à la Wikidata
Exemples
La documentation de ce module est générée par le modèle {{Documentation module}}.
Elle est incluse depuis sa sous-page de documentation. Veuillez placer les catégories sur cette page-là.
Les éditeurs peuvent travailler dans le bac à sable (modifier).
Voir les statistiques d'appel depuis le wikicode sur l'outil wstat et les appels depuis d'autres modules.
-- Test Lua
local Exports = {}
-- Cette fonction supprime les espaces au début et à la fin de la chaîne de caractères passée en argument.
-- Ce traitement est fait avec les fonctions UTF8 (pas sûr que ce soit nécessaire pour supprimer des espaces).
function trim(s)
if s == nil then
return ''
else
return mw.ustring.gsub(mw.ustring.gsub(s,"^%s+", ""),"%s+$", "")
end
end
function Exports.MiniBio(frame)
local outils=require('Module:Outils')
local date_complexe=require('Module:Date_complexe')
local Date=require('Module:Date') -- Majuscule initiale car le mot date est un mot clef du langage
local args=outils.extractArgs(frame) -- Retourne les paramètres d'appel du modèle et du module
local res='' -- Chaîne résultat de la fonction
local type_par_defaut='en ligne' -- Type de formatage des informations
local type_carte='carte' -- idem
local id -- Identifiant wikidata de la personne concernée
local entity -- Frame contennant les informations de la personne concernée
local dateNaiss,dateDeces -- Dates de naissance et de décès de la personne concernée
-- Nettoyage des paramètres
args[1]=trim(args[1])
if args[2] then
args[2]=trim(args[2])
end
if args['wikidata'] then
args['wikidata']=trim(args['wikidata'])
end
-- Contrôle le paramètre 'type'.
-- Il est convertit en minuscules.
-- S'il est absent ou d'une valeur non prévue, on lui assigne la valeur par défaut
if args['type'] then
args['type']=mw.ustring.lower(trim(args['type']))
if args['type']~=type_par_defaut and args['type']~=type_carte then
args['type']=type_par_defaut
end
else
args['type']=type_par_defaut
end
--Si le paramètre wikidata n'est pas indiqué alors on fera une recherche sur nom de page.
if args['wikidata'] and args['wikidata']~='' then
id=args['wikidata']
else
-- Si l'on a bien un premier paramètre
if args[1] and args[1]~='' then
id=mw.wikibase.getEntityIdForTitle(args[1])
end
end
-- Recherche des informations nécessaires
if id then
entity=mw.wikibase.getEntity(id)
end
-- Si l'entité nous a été retournée
if entity and entity.claims then
-- On vérifie qu'on a affaire à un être humain
if entity.claims['P31'] and entity.claims['P31'][1].mainsnak.datavalue.value.id=='Q5' then
-- On accède à la date de naissance et on la reformate
if entity.claims['P569'] and entity.claims['P569'][1].mainsnak.datavalue then
dateNaiss=date_complexe.splitDate(entity.claims['P569'][1].mainsnak.datavalue.value.time)
end
-- On accède à la date de décès et on la reformate
if entity.claims['P570'] and entity.claims['P570'][1].mainsnak.datavalue then
dateDeces=date_complexe.splitDate(entity.claims['P570'][1].mainsnak.datavalue.value.time)
end
end
end
-- Mise en place du lien wikidata du type : [[Prénom Nom]]
-- Si l'id wikidata n'a pas été fourni on se rabat sur les noms indiqués dans l'appel
if not args['wikidata'] or not entity then
if args[2] and args[2] ~= '' then
res = '|' .. args[2]
end
res = args[1] .. res
else
-- Si l'id wikidata a été indiqué, on va chercher le titre de la page
local tmp=entity:getLabel()
if args[2] and args[2] ~= '' then
res = '|' .. args[2]
else
if tmp ~= args[1] and args[1] ~= '' then
res = '|' .. args[1]
end
end
res = tmp .. res
end
if res ~= '' then
res = '[[' .. res .. ']]'
end
if entity then
-- Formatage des résultats par défaut "en ligne"
if args['type']==type_par_defaut then
-- Affichage des dates de vie
if dateNaiss or dateDeces then
res = res .. ' ('
if dateNaiss then
local tmp={[3]=tonumber(dateNaiss.era .. dateNaiss.year)}
-- Si les deux dates sont "Av. J.-C." on désactive l'affichage du premier "Av. J.-C."
if dateDeces and dateDeces.era=='-' and dateNaiss.era=='-' then
tmp.avJC='non'
end
res = res .. Date.modeleDate(tmp)
else
res = res .. '???'
end
if dateDeces then
res = res .. '-' .. Date.modeleDate({[3]=tonumber(dateDeces.era .. dateDeces.year)})
end
res = res .. ')'
end
-- Affichage du lien vers la Wikidata
res = res .. ' [[Fichier:Blue pencil.svg|Modifier Wikidata|link=d:' .. id .. '|10px]]'
end
-- Formatage des résultats "carte"
if args['type']==type_carte then
-- Affichage de l'image
if entity.claims['P18'] and entity.claims['P18'][1].mainsnak.datavalue then
res = res .. '[[Fichier:' .. entity.claims['P18'][1].mainsnak.datavalue.value
.. '|frameless|gauche|alt=' .. args[1] .. '|' .. args[1] .. ']]'
end
-- Affichage de la date de naissance
if dateNaiss then
local tmp={}
if dateNaiss.day~=0 then
tmp[1]=dateNaiss.day
end
if dateNaiss.month~=0 then
tmp[2]=dateNaiss.month
end
tmp[3]=tonumber(dateNaiss.era .. dateNaiss.year)
res = res .. '<br/>Naissance : ' .. Date.modeleDate(tmp)
end
-- Affichage de la date de décès
if dateDeces then
local tmp={}
if dateDeces.day~=0 then
tmp[1]=dateDeces.day
end
if dateDeces.month~=0 then
tmp[2]=dateDeces.month
end
tmp[3]=tonumber(dateDeces.era .. dateDeces.year)
res = res .. '<br/>Décès : ' .. Date.modeleDate(tmp)
end
-- Formatage de la carte
-- Plus Clearfix CSS
-- Et lien vers la Wikidata
res = '<div style="background:#eaecf0;width:500px;border-radius:5%;padding:15px">' .. res
.. '<div style="clear:both;"></div><small><small>[[d:' .. id .. '|Modifier Wikidata]]</small></small></div>'
end
end
return res
end
return Exports