Documentation[créer] [purger]
--[[
	Implémentation du modèle "Durée seule".
	]]
local p = {}

--[[
	Formatage d'un message d'erreur.
	]]
local function erreur(msg)
	return '<span class="error">' .. msg .. '</span>'
end

--[[
	Implémentation du modèle "Durée seule".
	]]
function p.dureeseule(frame)
	-- validation des arguments
	local args = frame:getParent().args
	local jj   = args[1];  if not jj then return erreur("argument 1 (jour) manquant") end
	local mm   = args[2];  if not mm then return erreur("argument 2 (mois) manquant") end
	local aa   = args[3];  if not aa then return erreur("argument 3 (années) manquant") end
	if not string.match(jj, "^%d+$") then return erreur("argument 1 (jour) non numérique") end
	if not string.match(mm, "^%d+$") then return erreur("argument 2 (mois) non numérique") end
	if not string.match(aa, "^%d+$") then return erreur("argument 3 (années) non numérique") end
	jj = tonumber(jj);  if jj > 31   then return erreur("argument 1 (jour) supérieur à 31") end
	mm = tonumber(mm);  if mm > 12   then return erreur("argument 2 (mois) supérieur à 12") end
	aa = tonumber(aa);  if aa > 9999 then return erreur("argument 3 (année) supérieur à 9999") end

	-- formatage du texte
	local texte
	if     aa == 0 then texte = ""
	elseif aa == 1 then texte = "1 an"
	else                texte = aa .. " ans"
	end

	if mm > 0 then
		if texte ~= "" then
			if (jj > 0) then texte = texte .. ", "
			else             texte = texte .. " et "
			end
		end
		texte = texte .. mm .. " mois"
	end

	if jj > 0 then
		if texte ~= "" then texte = texte .. " et "
		end
		if jj == 1 then texte = texte .. jj .. " jour"
		else            texte = texte .. jj .. " jours"
		end
	end

	if texte == "" then texte = "0 jour"
	end

	-- ajout des informations de tri
	local tri = string.format("%6.6d%4.4d%4.4d", aa, mm, jj)
	texte =  "<span data-sort-value=\"&amp;" .. tri .. "\" class=\"datasortkey\">" .. texte .. "</span>"

	return texte
end

return p