Aller au contenu

Module:Jour du mois

Depi Wikipedya, ansiklopedi lib

La documentation pour ce module peut être créée à Module:Jour du mois/doc

local utils = require "Module:Utilitaire"
local iter = require "Module:Iterateurs"
p = {}

p.noms_mois = {"janvye", "fevriye", "mas", "avril", "me", "jen", "jiyè", "out", "septanm", "oktòb","novanm","desanm"
}


-- retourne un numéro de mois depuis son nom ou son numéro, ou nil si invalide
function p.numero_mois_depuis_chaine(chaine) 
	local num = tonumber(chaine)
	
	if chaine == "out" then
		num = 8
	end
	
	num = num or utils.table_ifind(p.noms_mois, chaine)
	
	if num < 1 or num > 12 then 
		return 
	end
	return num
end

local function to_sparql_date(jour, mois, an)
	return string.format('"%d-%02d-%02d"^^xsd:dateTime', an, mois, jour)
end

function p.intervalle_dates_sparql(jou, mwa, an_min, an_max)
	local annees_iso = {}
	local mois = p.numero_mois_depuis_chaine(mois)
	for an=an_min, an_max do
		table.insert(annees_iso,to_sparql_date(jour, mois, an))
	end
	return table.concat(annees_iso,"\t\n")
end

function p.annee_sparql_a_la_date(frame)
	local an_min = tonumber(frame.args.an_min) or 1000 -- démarrage par défaut à l’an 1000 parce que lister toutes les années prend de la place, trop pour des inclusions multiples ?
	local an_max= tonumber(frame.args.an_max or os.date("%Y"))
	
	return p.intervalle_dates_sparql(frame.args[1], frame.args[2], an_min, an_max)
end

function p.nom_du_mois(frame)
	return p.noms_mois[p.numero_mois_depuis_chaine(frame.args[1])]
end

return p