Module:archives

Bonjour, vous êtes venu ici pour chercher la signification du mot Module:archives. Dans DICTIOUS, vous trouverez non seulement toutes les significations du dictionnaire pour le mot Module:archives, mais vous apprendrez également son étymologie, ses caractéristiques et comment dire Module:archives au singulier et au pluriel. Tout ce que vous devez savoir sur le mot Module:archives est ici. La définition du mot Module:archives vous aidera à être plus précis et correct lorsque vous parlerez ou écrirez vos textes. Connaître la définition deModule:archives, ainsi que celles d'autres mots, enrichit votre vocabulaire et vous fournit des ressources linguistiques plus nombreuses et de meilleure qualité.

 Documentation

Invoqué dans {{archives}}.


local m_params = require("Module:paramètres")
local m_date = require('Module:Date')

local p = {}

--- Generate the table or list for the given start and end years.
--- @param pageName string The name of the bage page for each link.
--- @param startYear number The starting year.
--- @param endYear number The ending year.
--- @param separator string The separator to use.
--- @return string The generated wikicode.
local function generateYearTable(pageName, startYear, endYear, separator)
  local result = ""
  if separator == "||" then
    result = '{| class="wikitable" style="margin: 0.5em auto"\n|'
  elseif separator == "image" then
    result = "<div>"
  end

  local items = {}
  for year = startYear, endYear do
    local targetPage = pageName .. "/" .. year
    local text = separator == "<br>" and targetPage or tostring(year)
    if separator == "image" then
      table.insert(items, mw.ustring.format(
          '<span style="margin: 0.5em; display: inline-block">' ..
              ']<br>]</span>',
          targetPage,
          targetPage,
          text
      ))
    else
      table.insert(items, mw.ustring.format("]", targetPage, text))
    end
  end

  result = result .. table.concat(items, separator == "image" and "" or (separator .. " "))
  if separator == "||" then
    result = result .. "\n|}\n"
  elseif separator == "image" then
    result = result .. "</div>\n"
    separator = ""
  end

  return result
end

--- Generate the table or list for the given start and end dates.
--- @param timeUnit string Either "mois" for months or "semaine" for weeks
--- @param pageName string The name of the bage page for each link.
--- @param startDate number The starting date.
--- @param endDate number The ending date.
--- @param separator string The separator to use.
--- @param format string Either "nom" for month names, "abréviation" for abbreviated month names, or "numéro" for month numbers.
--- @return string The generated wikicode.
local function generatePeriodTable(timeUnit, pageName, startDate, endDate, separator, format)
  local startYear, periodStart
  if mw.ustring.find(startDate, "%-") then
    local y = mw.ustring.gsub(startDate, "(%d+)%-(%d+)", "%1")
    startYear = tonumber(y)
    local m = mw.ustring.gsub(startDate, "(%d+)%-(%d+)", "%2")
    periodStart = tonumber(m)
  else
    startYear = tonumber(startDate)
    periodStart = 1
  end

  local endYear, periodEnd
  if mw.ustring.find(endDate, "%-") then
    local y = mw.ustring.gsub(endDate, "(%d+)%-(%d+)", "%1")
    endYear = tonumber(y)
    local m = mw.ustring.gsub(endDate, "(%d+)%-(%d+)", "%2")
    periodEnd = tonumber(m)
  else
    endYear = tonumber(endDate)
    if timeUnit == "week" then
      periodEnd = tonumber(os.date("%W"))
    else
      periodEnd = tonumber(os.date("%m"))
    end
  end

  local periodYearLimit = timeUnit == "week" and 52 or 12

  local result = ""
  if separator == "||" then
    result = result .. '{| class="wikitable" style="margin: 0.5em auto"\n! scope="row" | ' .. startYear .. "\n|"
    if periodStart >= 2 then
      result = result .. 'colspan="' .. (periodStart - 1) .. '"| ||'
    end
  elseif separator == "image" then
    result = result .. "<div>"
  end

  for year = startYear, endYear do
    for period = periodStart, periodYearLimit do
      local targetPage, text

      if timeUnit == "week" then
        targetPage = pageName .. "/semaine " .. period .. " " .. year
        if separator == "||" then
          text = period
        else
          text = period .. " " .. year
        end

      elseif format == "nom" then
        targetPage = pageName .. "/" .. m_date.nomDuMois(period) .. " " .. year
        if separator == "||" then
          text = m_date.nomDuMois(period)
        else
          text = m_date.nomDuMois(period) .. " " .. year
        end

      elseif format == "abréviation" then
        targetPage = pageName .. "/" .. m_date.nomDuMois(period) .. " " .. year
        if separator == "||" then
          text = m_date.abrevDuMois(period)
        else
          text = m_date.abrevDuMois(period) .. " " .. year
        end

      else
        targetPage = pageName .. "/" .. year .. "/" .. period
        text = year .. "/" .. period
      end

      if separator == "<br>" then
        text = targetPage
      end

      if separator == "image" then
        result = result .. mw.ustring.format(
            '<span style="margin: 0.5em; display: inline-block">' ..
                ']<br>]</span>',
            targetPage,
            targetPage,
            text
        )
      else
        result = result .. mw.ustring.format("]", targetPage, text)
      end

      if year == endYear and period == periodEnd then
        break
      elseif period < periodYearLimit then
        if separator ~= "image" then
          result = result .. separator .. " "
        end
      end
    end

    if year < endYear then
      if separator == "||" then
        result = result .. "\n|-\n! scope=\"row\" | " .. (year + 1) .. "\n|"
      else
        result = result .. "\n\n"
      end
    end
    periodStart = 1
  end

  if separator == "||" then
    result = result .. "\n|}\n"
  elseif separator == "image" then
    result = result .. "</div>\n"
  end

  return result
end

function p.generateTable(frame)
  local args = m_params.process(frame.args, {
     = { enum = { "an", "mois", "semaine" } },
     = { required = true },
     = { default = "2004", checker = function(v)
      return mw.ustring.gmatch(v, "%d+(%-%d+)?")
    end },
     = { default = os.date("%Y"), checker = function(v)
      return mw.ustring.gmatch(v, "%d+(%-%d+)?")
    end },
     = {},
     = { enum = { "nom", "abréviation", "numéro" }, default = "nom" },
  })

  local unit = args
  local pageName = args
  local start = args
  local end_ = args
  local separator = args or ""
  local format = args

  if separator == "grille" then
    separator = "||"
  end

  if unit == "an" then
    return generateYearTable(pageName, tonumber(start), tonumber(end_), separator)
  elseif unit == "mois" then
    return generatePeriodTable("month", pageName, start, end_, separator, format)
  elseif unit == "semaine" then
    return generatePeriodTable("week", pageName, start, end_, separator, format)
  end
end

return p