Bienvenue sur le wiki de Nuit debout, nous sommes le 3060 mars.




Module:Archives

De NuitDebout
Aller à : navigation, rechercher

La documentation pour ce module peut être créée à Module:Archives/doc

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)
  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)
      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