Module:Jour du mois
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