Module:Archives
La documentation pour ce module peut être créée à Module:Archives/doc
-- luacheck: globals mw, no max line length
local lib_date = require('Module:Date')
local p = {}
function p.an(frame)
local page, debut, fin, separateur, tag1, tag2, tag3, prependToResult, appendToResult
if frame ~= nil then
if frame.args[1] ~= nil then page = mw.text.trim(frame.args[1]) end
if frame.args[2] ~= nil then debut = tonumber(mw.text.trim(frame.args[2])) end
if frame.args[3] ~= nil then fin = tonumber(mw.text.trim(frame.args[3])) end
if frame.args[4] ~= nil then separateur = mw.text.trim(frame.args[4]) end
end
if debut == nil or debut == "" then debut = 2004 end
if fin == nil or fin == "" then fin = tonumber(os.date("%Y")) end
if separateur == nil then separateur = "" end
local ListeAnnees = {}
if separateur == "grille" then
prependToResult = '{| cellpadding="5" style="border:1px solid #aaaaaa; margin-top:1em; margin-bottom:0.5em" rules="all" align="center"\n| '
elseif separateur == "image" then
prependToResult = "<ul>"
tag1 = '<li style="float:left;margin:2px 2px 2px 8px;display:inline;">[[Fichier:Breathe-document-save.svg|30px|link='
tag2 = "]]<br>"
tag3 = "</li>"
end
while debut <= fin do
local lien = page .. "/" .. tostring(debut)
local texte = tostring(debut)
if separateur == "image" then
table.insert(ListeAnnees, tag1 .. lien .. tag2 .. "[[" .. lien .. "|" .. texte .. "]]" .. tag3)
else
table.insert(ListeAnnees, "[[" .. lien .. "|" .. texte .. "]]")
end
debut = debut + 1
end
if separateur == "grille" then
appendToResult = "\n|}\n"
separateur = " || "
elseif separateur == "image" then
appendToResult = "</ul>\n"
separateur = " "
else
separateur = separateur .. " "
end
return (prependToResult or '') .. table.concat(ListeAnnees, separateur) .. (appendToResult or '')
end
function p.mois(frame)
return p.periode("mois", frame)
end
function p.semaine(frame)
return p.periode("semaine", frame)
end
function p.periode(unite, frame)
local page, AnneeDebut, PeriodeDebut, AnneeFin, PeriodeFin, separateur, format, LimiteFin, PeriodeFinTemp, tag1, tag2, tag3
if frame ~= nil then
if frame.args[1] ~= nil then page = mw.text.trim(frame.args[1]) end
if frame.args[2] ~= nil then
AnneeDebut = mw.ustring.gsub(frame.args[2], "(.+)%-(.+)", "%1")
AnneeDebut = tonumber(AnneeDebut)
PeriodeDebut = mw.ustring.gsub(frame.args[2], "(.+)%-(.+)", "%2")
PeriodeDebut = tonumber(PeriodeDebut)
end
if frame.args[3] ~= nil then
AnneeFin = mw.ustring.gsub(frame.args[3], "(.+)%-(.+)", "%1")
AnneeFin = tonumber(AnneeFin)
PeriodeFin = mw.ustring.gsub(frame.args[3], "(.+)%-(.+)", "%2")
PeriodeFin = tonumber(PeriodeFin)
end
if frame.args[4] ~= nil then
separateur = mw.text.trim(frame.args[4])
else
separateur = ""
end
if frame.args[5] ~= nil then
if mw.text.trim(frame.args[5]) == "" then
format = "nom"
else
format = mw.text.trim(frame.args[5])
end
else
format = "nom"
end
end
if AnneeDebut == nil or AnneeDebut == "" then
AnneeDebut = 2004
end
if PeriodeDebut == nil or PeriodeDebut == "" then
PeriodeDebut = 01
end
if AnneeFin == nil or AnneeFin == "" then
AnneeFin = tonumber(os.date("%Y"))
end
if unite == "semaine" then
LimiteFin = tonumber(52)
PeriodeFinTemp = tonumber(os.date("%W"))
else
LimiteFin = tonumber(12)
PeriodeFinTemp = tonumber(os.date("%m"))
end
if PeriodeFin == nil or PeriodeFin == "" then PeriodeFin = PeriodeFinTemp end
local ListePeriode = ""
if separateur == "grille" then
ListePeriode = '{| cellpadding="5" style="border:1px solid #aaaaaa; margin-top:1em; margin-bottom:0.5em" rules="all" align="center"\n! ' .. AnneeDebut .. " || "
elseif separateur == "image" then
ListePeriode = "<ul>"
tag1 = '<li style="float:left;margin:2px 2px 2px 8px;display:inline;">[[Fichier:Breathe-document-save.svg|30px|link='
tag2 = "]]<br>"
tag3 = "</li>"
end
while AnneeDebut <= AnneeFin do
while PeriodeDebut <= LimiteFin do
local lien, texte
if unite == "semaine" then
lien = page .. "/semaine " .. PeriodeDebut .. " " .. tostring(AnneeDebut)
if separateur == "grille" then
texte = PeriodeDebut
else
texte = PeriodeDebut .. " " .. tostring(AnneeDebut)
end
elseif format == "nom" then
lien = page .. "/" .. lib_date.determinationMois(PeriodeDebut) .. " " .. tostring(AnneeDebut)
if separateur == "grille" then
texte = lib_date.determinationMois(PeriodeDebut)
else
texte = lib_date.determinationMois(PeriodeDebut) .. " " .. tostring(AnneeDebut)
end
elseif format == "abréviation" then
lien = page .. "/" .. lib_date.determinationMois(PeriodeDebut) .. " " .. tostring(AnneeDebut)
texte = mw.text.truncate(lib_date.determinationMois(PeriodeDebut),3)
else
lien = page .. "/" .. tostring(AnneeDebut) .. "/" .. tostring(PeriodeDebut)
texte = tostring(AnneeDebut) .. "/" .. tostring(PeriodeDebut)
end
if separateur == "image" then
ListePeriode = ListePeriode .. tag1 .. lien .. tag2 .. "[[" .. lien .. "|" .. texte .. "]]" .. tag3
else
ListePeriode = ListePeriode .. "[[" .. lien .. "|" .. texte .. "]]"
end
if AnneeDebut == AnneeFin and PeriodeDebut == PeriodeFin then
PeriodeDebut = LimiteFin
elseif PeriodeDebut < LimiteFin then
if separateur == "grille" then
ListePeriode = ListePeriode .. " || "
elseif separateur == "image" then
ListePeriode = ListePeriode .. " "
else
ListePeriode = ListePeriode .. separateur .. " "
end
end
PeriodeDebut = PeriodeDebut + 1
end
if AnneeDebut < AnneeFin or PeriodeDebut < PeriodeFin then
-- Changement d'année sauf pour la toute dernière ligne
if separateur == "grille" then
ListePeriode = ListePeriode .. "\n|-\n! " .. AnneeDebut+1 .. " || "
else
ListePeriode = ListePeriode .. "\n\n"
end
end
PeriodeDebut = 1
AnneeDebut = AnneeDebut + 1
end
if separateur == "grille" then
ListePeriode = ListePeriode .. "\n|}\n"
elseif separateur == "image" then
ListePeriode = ListePeriode .. "</ul>\n"
end
return ListePeriode
end
return p