Module:Archives
Apparence
[voir] [modifier] [historique] [purger]
Utilisation
Ce module est conçu pour une utilisation à travers le modèle Modèle:ArchivesLua. Il fournit des fonctions pour la mise en forme automatique des liens vers les archives d'une page de discussion.
Fonctions exportables
an(frame)
– Prend en argument un frame contenant dans l'ordre les paramètres ci-dessous et retourne la liste des liens d'archives d'une page année par année.page
: nom de la page wikipédia dont on veut les archives ;debut
: année des premières archives (par défaut, 2004) ;fin
: année des dernières archives (par défaut, l'année en cours);separateur
: séparateur à utilise entre les liens d'archive (par défaut, pas de séparateur).
periode(unite, frame)
– Prend en argument une chaîne de caractèresunite
qui adapte la forme des liens d'archive uniquement lorsqu'il vaut"semaine"
(applique le formatage par mois par défaut) et un frame contenant dans l'ordre les paramètres ci-dessous et retourne la liste des liens d'archives d'une page, pour une séparation des archives plus complexe que par année.page
: nom de la page wikipédia dont on veut les archives ;AnneeDebut-PeriodeDebut
: date de début des archives avecAnneeDebut
etPeriodeDebut
des nombres, la période étant un numéro de mois ou de semaine ;AnneeFin-PeriodeFin
: date de fin des archives au même format que la date de début (par défaut, la date du jour) ;separateur
: séparateur à utilise entre les liens d'archive (par défaut, pas de séparateur) ;format
:"nom"
ou"abréviation"
, dans le deuxième cas le nom du mois est tronqué après le troisième caractère (Par défaut,"nom"
).
semaine(frame)
– Retourneperiode("semaine", frame)
;mois(frame)
– Retourneperiode("mois", frame)
.
Modules externes et autres éléments dont ce module a besoin pour fonctionner
mw.text.trim
– Enlève les espaces et autres caractères au début et à la fin d'une chaine de caractères ;mw.text.truncate
– Tronque une chaîne de caractères et y ajoute des points de suspension ;mw.ustring.gsub
– Remplace toutes les occurrences d'un motif dans une chaîne de caractères par une chaîne de remplacement ;
Module:Date
– Module fournissant des fonctions de traitement des dates.
Modules lua utilisant ce module
Aucun
Modèles appelant directement ce module
Exemples
Dans Modèle:ArchivesLua, ce module est appelé par le code suivant :
{{#invoke:archives |{{{période|{{{1|an}}}}}} |{{{page|{{{2|}}}}}} |{{{début|{{{3|}}}}}} |{{{fin|{{{4|}}}}}} |{{{séparateur|{{{5|}}}}}} |{{{format|{{{6|}}}}}} }}
La documentation de ce module est générée par le modèle {{Documentation module}}.
Elle est incluse depuis sa sous-page de documentation. Veuillez placer les catégories sur cette page-là.
Les éditeurs peuvent travailler dans le bac à sable (créer).
Voir les statistiques d'appel depuis le wikicode sur l'outil wstat et les appels depuis d'autres modules.
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)
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 == "||" 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)
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)
MoisDebut = mw.ustring.gsub(frame.args[2], "(.+)\-(.+)", "%2")
MoisDebut = tonumber(MoisDebut)
end
if frame.args[3] ~= nil then
AnneeFin = mw.ustring.gsub(frame.args[3], "(.+)\-(.+)", "%1")
AnneeFin = tonumber(AnneeFin)
MoisFin = mw.ustring.gsub(frame.args[3], "(.+)\-(.+)", "%2")
MoisFin = tonumber(MoisFin)
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 MoisDebut == nil or MoisDebut == "" then
MoisDebut = 01
end
if AnneeFin == nil or AnneeFin == "" then
AnneeFin = tonumber(os.date("%Y"))
end
if MoisFin == nil or MoisFin == "" then
MoisFin = tonumber(os.date("%m"))
end
local ListeMois = ""
if separateur == "||" then
ListeMois = '{| cellpadding="5" style="border:1px solid #aaaaaa; margin-top:1em; margin-bottom:0.5em" rules="all" align="center"\n|' .. "'''" .. AnneeDebut .. "'''||"
elseif separateur == "image" then
ListeMois = "<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 MoisDebut <= 12 do
if format == "nom" then
lien = page .. "/" .. lib_date.nomDuMois(MoisDebut) .. " " .. tostring(AnneeDebut)
if separateur == "||" then
texte = lib_date.nomDuMois(MoisDebut)
else
texte = lib_date.nomDuMois(MoisDebut) .. " " .. tostring(AnneeDebut)
end
elseif format == "abréviation" then
lien = page .. "/" .. lib_date.nomDuMois(MoisDebut) .. " " .. tostring(AnneeDebut)
texte = mw.text.truncate(lib_date.nomDuMois(MoisDebut),3)
else
lien = page .. "/" .. tostring(AnneeDebut) .. "/" .. tostring(MoisDebut)
texte = tostring(AnneeDebut) .. "/" .. tostring(MoisDebut)
end
if separateur == "image" then
ListeMois = ListeMois .. tag1 .. lien .. tag2 .. "[[" .. lien .. "|" .. texte .. "]]" .. tag3
else
ListeMois = ListeMois .. "[[" .. lien .. "|" .. texte .. "]]"
end
if AnneeDebut == AnneeFin and MoisDebut == MoisFin then
MoisDebut = 12
elseif MoisDebut < 12 then
if separateur ~= "image" then
ListeMois = ListeMois .. separateur .. " "
end
end
MoisDebut = MoisDebut + 1
end
if AnneeDebut < AnneeFin or MoisDebut < MoisFin then
-- Changement d'année sauf pour la toute dernière ligne
if separateur == "||" then
ListeMois = ListeMois .. "\n|-\n|'''" .. AnneeDebut+1 .. "'''||"
else
ListeMois = ListeMois .. "\n\n"
end
end
MoisDebut = 1
AnneeDebut = AnneeDebut + 1
end
if separateur == "||" then
ListeMois = ListeMois .. "\n|}\n"
elseif separateur == "image" then
ListeMois = ListeMois .. "</ul>\n"
end
return ListeMois
end
return p