Module:Archives
Apparence
[voir] [modifier] [historique] [purger]
Utilisation
[modifier le code]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
[modifier le code]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
[modifier le code]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
[modifier le code]Aucun
Modèles appelant directement ce module
[modifier le code]Exemples
[modifier le code]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.
-- 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