Module:Archives
Apparence
Documentation du Module:Archives : v · d · m · h.
lib_date = require('Module:Date')
local p = {}
function p.an(frame)
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])
if separateur == "grille" then
separateur = "||"
end
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 == "||" then
table.insert(ListeAnnees, '{| cellpadding="5" style="border:1px solid #aaaaaa; margin-top:1em; margin-bottom:0.5em" rules="all" align="center"\n|')
elseif separateur == "image" then
table.insert(ListeAnnees, "<ul>")
tag1 = '<li style="float:left;margin:2px 2px 2px 8px;display:inline;">[[Image:Nuvola devices nfs mount.png|30px|link='
tag2 = "]]<br/>"
tag3 = "</li>"
end
while debut <= fin do
lien = page .. "/" .. tostring(debut)
if separateur == "<br>" then
texte = lien
else
texte = tostring(debut)
end
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 == "||" then
table.insert(ListeAnnees, "\n|}\n")
elseif separateur == "image" then
table.insert(ListeAnnees, "</ul>\n")
separateur = ""
end
return table.concat(ListeAnnees, separateur .. " ")
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)
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
if mw.text.trim(frame.args[4]) == "grille" then
separateur = "||"
else
separateur = mw.text.trim(frame.args[4])
end
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 == "||" then
ListePeriode = '{| cellpadding="5" style="border:1px solid #aaaaaa; margin-top:1em; margin-bottom:0.5em" rules="all" align="center"\n!' .. AnneeDebut .. "\n|"
if PeriodeDebut >= 2 then
ListePeriode = ListePeriode .. 'colspan="' .. PeriodeDebut - 1 .. '"| ||'
end
elseif separateur == "image" then
ListePeriode = "<ul>"
tag1 = '<li style="float:left;margin:2px 2px 2px 8px;display:inline;">[[Image:Nuvola devices nfs mount.png|30px|link='
tag2 = "]]<br/>"
tag3 = "</li>"
end
while AnneeDebut <= AnneeFin do
while PeriodeDebut <= LimiteFin do
if unite == "semaine" then
lien = page .. "/semaine " .. PeriodeDebut .. " " .. tostring(AnneeDebut)
if separateur == "||" then
texte = PeriodeDebut
else
texte = PeriodeDebut .. " " .. tostring(AnneeDebut)
end
elseif format == "nom" then
lien = page .. "/" .. lib_date.nomDuMois(PeriodeDebut) .. " " .. tostring(AnneeDebut)
if separateur == "||" then
texte = lib_date.nomDuMois(PeriodeDebut)
else
texte = lib_date.nomDuMois(PeriodeDebut) .. " " .. tostring(AnneeDebut)
end
elseif format == "abréviation" then
lien = page .. "/" .. lib_date.nomDuMois(PeriodeDebut) .. " " .. tostring(AnneeDebut)
texte = mw.text.truncate(lib_date.nomDuMois(PeriodeDebut),3)
else
lien = page .. "/" .. tostring(AnneeDebut) .. "/" .. tostring(PeriodeDebut)
texte = tostring(AnneeDebut) .. "/" .. tostring(PeriodeDebut)
end
if separateur == "<br>" then
texte = lien
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 ~= "image" then
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 == "||" then
ListePeriode = ListePeriode .. "\n|-\n!" .. AnneeDebut+1 .. "\n|"
else
ListePeriode = ListePeriode .. "\n\n"
end
end
PeriodeDebut = 1
AnneeDebut = AnneeDebut + 1
end
if separateur == "||" then
ListePeriode = ListePeriode .. "\n|}\n"
elseif separateur == "image" then
ListePeriode = ListePeriode .. "</ul>\n"
end
return ListePeriode
end
return p