Aller au contenu

Module:Archives

Une page de Wikipédia, l'encyclopédie libre.
Ceci est une version archivée de cette page, en date du 13 avril 2016 à 00:09 et modifiée en dernier par JackPotte (discuter | contributions) (Nouvelle page : 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.a...). Elle peut contenir des erreurs, des inexactitudes ou des contenus vandalisés non présents dans la version actuelle.
(diff) ← Version précédente | Voir la version actuelle (diff) | Version suivante → (diff)

 Documentation[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.
    1. page : nom de la page wikipédia dont on veut les archives ;
    2. debut : année des premières archives (par défaut, 2004) ;
    3. fin : année des dernières archives (par défaut, l'année en cours);
    4. 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ères unite 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.
    1. page : nom de la page wikipédia dont on veut les archives ;
    2. AnneeDebut-PeriodeDebut : date de début des archives avec AnneeDebut et PeriodeDebut des nombres, la période étant un numéro de mois ou de semaine ;
    3. AnneeFin-PeriodeFin : date de fin des archives au même format que la date de début (par défaut, la date du jour) ;
    4. separateur : séparateur à utilise entre les liens d'archive (par défaut, pas de séparateur) ;
    5. 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) – Retourne periode("semaine", frame) ;
  • mois(frame) – Retourne periode("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|}}}}}}
}}
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