Module:Utilisateur:Od1n/DateDeDécès

Une page de Wikipédia, l'encyclopédie libre.
Sauter à la navigation Sauter à la recherche

 Documentation[créer] [purger]
-- [[Sujet:Vk1pbcpnnz9wcafi]]

--[[
	{{date de décès|31 décembre 2099|1 janvier 1900}}                 -- 2
	{{date de décès|31|décembre|2099|1|janvier|1900}}                 -- 6
	{{date de décès|31 décembre 2099}}                                -- 1
	{{date de décès|31|décembre|2099}}                                -- 3
	{{date de décès|31 décembre 2099|1 janvier 1900|en informatique}} -- 3
	{{date de décès|31|décembre|2099|1|janvier|1900|en informatique}} -- 7
	{{date de décès|31 décembre 2099|en informatique}}                -- 2
	{{date de décès|31|décembre|2099|en informatique}}                -- 4
]]--

--[[
	UPDATE - ajouté support de :
	{{date de décès|31 décembre 2099||en informatique}}               -- 3, mais avec 2 vide
	{{date de décès|31|décembre|2099||||en informatique}}             -- 7, mais avec 4-5-6 vides (qui plus est, cette syntaxe est documentée)
]]--

local p = {}

local moduleDate = require 'Module:Date'
local moduleOutils = require 'Module:Outils'
local trim = moduleOutils.trim

-- en local dans Module:Date
local dataLiens
local success, resultat = pcall ( mw.loadData, 'Module:Date/Data' )
if success then
	dataLiens = resultat
else
	-- protection au cas où le sous-module serait mal modifié
	dataLiens = { [''] = { mois = { aucun = 1000, tous = { 1773, 2014 } }, } }
end

function p.modeleDateDeDeces( frame )

	local parentFrame = frame:getParent()
	local args = parentFrame.args

	local arg1, arg2, arg3, arg4, arg5, arg6, arg7 = moduleDate.nettoyageJour( args[1] ), trim( args[2] ), trim( args[3] ), moduleDate.nettoyageJour( args[4] ), trim( args[5] ), trim( args[6] ), trim( args[7] )

	local params

	if arg7 then -- {{date de décès|31|décembre|2099||||en informatique}}
		params = {
			[1]              = arg3,
			['qualificatif'] = arg7,
		}
		if arg2 then -- {{Date de décès||2|1993||6|1920|en sport}}
			params[1] = arg2 .. ' ' .. params[1]
		end
		if arg1 then -- {{Date de décès|||1993|||1920|en sport}}
			params[1] = arg1 .. ' ' .. params[1]
		end
		if arg4 or arg5 or arg6 then -- {{date de décès|31|décembre|2099|1|janvier|1900|en informatique}}
			params['dateNaissanceMort'] = arg6
			if arg5 then -- {{Date de décès||2|1993||6|1920|en sport}}
				params['dateNaissanceMort'] = trim(arg5 .. ' ' .. params['dateNaissanceMort'])
			end
			if arg4 then -- {{Date de décès|||1993|||1920|en sport}}
				params['dateNaissanceMort'] = trim(arg4 .. ' ' .. params['dateNaissanceMort'])
			end
		end
	elseif arg6 then -- {{date de décès|31|décembre|2099|1|janvier|1900}}
		params = {
			[1]                   = arg1 .. ' ' .. arg2 .. ' ' .. arg3,
			['dateNaissanceMort'] = arg4 .. ' ' .. arg5 .. ' ' .. arg6,
		}
	elseif arg4 then -- {{Date de décès|24|2|1993|en sport}}
		params = {
			[1]              = arg3,
			['qualificatif'] = arg4,
		}
		if arg2 then -- {{Date de décès|||1993|en sport}}
			params[1] = arg2 .. ' ' .. params[1]
		end
		if arg1 then -- {{Date de décès||2|1993|en sport}}
			params[1] = arg1 .. ' ' .. params[1]
		end
	elseif arg3 then
		if arg1:match( '^[0-3]?%d$' ) then -- {{date de décès|31|décembre|2099}}
			params = {
				[1] = arg1 .. ' ' .. arg2 .. ' ' .. arg3,
			}
		else -- {{date de décès|31 décembre 2010|1 janvier 1900|en informatique}}
			params = {
				[1]                   = arg1,
				['dateNaissanceMort'] = arg2,
				['qualificatif']      = arg3,
			}
		end
	elseif arg2 then
		local test, elements = moduleDate.separationJourMoisAnnee( arg2 )
		if test then -- {{date de décès|31 décembre 2099|1 janvier 1900}}
			params = {
				[1]                   = arg1,
				['dateNaissanceMort'] = arg2,
			}
		else -- {{date de décès|31 décembre 2099|en informatique}}
			params = {
				[1]              = arg1,
				['qualificatif'] = arg2,
			}
		end
	else -- {{date de décès|31 décembre 2099}}
		params = {
			[1] = arg1,
		}
	end

	-- récupération des paramètres nommés
	for n, v in pairs( parentFrame.args ) do
		if type( n ) == 'string' then
			params[n] = v
		end
	end

	-- il s'agit toujours d'une date de décès (dday)
	params.mort = true

	mw.logObject( params )

	return moduleDate.modeleDate( params )
end

return p