Aller au contenu

Module:MiniBio

Une page de Wikipédia, l'encyclopédie libre.
Ceci est une version archivée de cette page, en date du 19 juillet 2017 à 09:24 et modifiée en dernier par Peekay (discuter | contributions). Elle peut contenir des erreurs, des inexactitudes ou des contenus vandalisés non présents dans la version actuelle.

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

Utilisation

Fonction exportable :

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éen
  • mw.ustring - gestion des chaînes de caractères UTF8
  • mw.text - gestion des chaînes de caractères
  • mw.wikibase - accès à la Wikidata

Exemples

-- Test Lua

local Exports = {}

	function trim(s)
		if s == nil then return '' end
		return mw.ustring.gsub(mw.ustring.gsub(s,"^%s+", ""),"%s+$", "")
	end

    function Exports.MiniBio(frame)
    	local outils=require('Module:Outils')
    	local date_complexe=require('Module:Date_complexe')
    	local Date=require('Module:Date')
    	local args=outils.extractArgs(frame)
    	local res=''
    	local type_par_defaut='en ligne'
    	local type_carte='carte'
    	local id
    	local entity
    	local dateNaiss,dateDeces
    	
    	-- 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
	    args[1]=trim(args[1])
	    
	    -- Si l'on a bien un premier paramètre
    	if args[1] and args[1]~='' then
			-- recherche des informations nécessaires
	    	id=mw.wikibase.getEntityIdForTitle(args[1])
	    	if id  then
	    		entity=mw.wikibase.getEntity(id)
	    		-- 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
						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
						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
	    	end    	

			res = res .. '[[' .. args[1] .. ']]'
	    	-- Formatage des résultats par défaut "en ligne"
	    	if args['type']==type_par_defaut then
				if dateNaiss then
					local tmp={[3]=tonumber(dateNaiss.era .. dateNaiss.year)}
					if dateDeces and dateDeces.era=='-' and dateNaiss.era=='-' then
						tmp.avJC='non'
					end
					res = res .. ' (' .. Date.modeleDate(tmp)
					if dateDeces then
						res = res .. ' - ' .. Date.modeleDate({[3]=tonumber(dateDeces.era .. dateDeces.year)})
					end
					res = res .. ')'
				end
				if id then
					res = res .. ' [[Fichier:Blue pencil.svg|Modifier Wikidata|link=d:' .. id .. '|10px]]'
				end
	    	end
	    	
	    	-- Formatage des résultats "carte"
	    	if args['type']==type_carte then
				--[[Fichier:Johann Sebastian Bach.jpg|frameless|gauche|alt=Peinture de Bach en 1746|J. S. Bach en 1746]]
				--Jean-Sébastien Bach<br/>né à Eisenach le 31 mars (21 mars) 1685<br/>mort à Leipzig le 28 juillet 1750
				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
				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
				if id then
					res = res .. '<br/><small><small>[[d:' .. id .. '|Modifier Wikidata]]</small></small>'
				end
				res = '<div style="background:#eaecf0;width:500px;border-radius:5%;padding:5px">' .. res .. '<div style="clear:both;"></div></div>'
	    	end
	    end
    	
    	return res
    end
    
return Exports