Module:voir

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

 Documentation[voir] [modifier] [historique] [purger]

Ce module réunit des fonctions pour afficher les modèles {{voir}}, {{voir autres systèmes}} et {{voir autres scripts}}.

Fonctions :

templateSee(frame)
Utilisable indirectement dans un modèle voir. Crée une liste formatée à partir de la liste d'éléments donnés au modèle. Le bandeau n’est pas inclus.
templateSeeOtherScripts(frame)
Utilisable indirectement dans un modèle voir autres scripts. Crée une liste formatée « script : symbole » à partir de la liste de paires d’éléments donnés au modèle. Le bandeau n’est pas inclus.

-- Avant de publier toute modification, testez l’affichage dans ]
local m_bases = require("Module:bases")

local p = {}

--- Parses the raw arguments.
--- @param rawTable table Raw parameters table.
--- @param title string Current page’s title.
--- @return table The parsed list.
local function _toTable(rawTable, title)
  local i = 1
  local maxLinks = 200
  local paramsTable = {}

  while rawTable and i <= maxLinks do
    local item = mw.text.trim(rawTable)

    -- Pour traiter ]
    local description = (mw.ustring.match(item, " %((*)%)$")) or ""
    if description ~= "" then
      description = " ''(" .. description .. ")''"
      item = mw.ustring.gsub(item, " %(*%)$", "")
    end

    -- Caractères spéciaux non représentables avec une page : à écrire comme Lien{{!}}Caractère
    -- (Bricolage : pas possible de faire mieux ?)
    local link = mw.ustring.gsub(item, "|.*", "")

    if link ~= "" and link ~= title then
      table.insert(paramsTable, "]" .. description)
    end
    i = i + 1
  end
 
  return paramsTable
end

local function containsDuplicates(list)
  local maxLinks = 200
  local i = 1
  while list and i <= maxLinks do
    local j = i + 1
    while list and j <= maxLinks do
      if list == list then
      	return true
      end
      j = j + 1
    end
    i = i + 1
  end
  return false	
end

--- Actually builds the list of values. The entry corresponding to the title of
--- the current page is hidden.
--- @param values table The values to display as a list.
--- @return string The formatted list.
local function _makeText(values)
  local title = mw.title.getCurrentTitle().fullText
  local list = _toTable(values, title)
  local text = ''

  if #list > 0 then
    text = table.concat(list, ", ")
    if containsDuplicates(list) then
  	  text = text .. '<br><span style="color: red">Le modèle voir contient des doublons. Merci de les retirer.</span>]'
    end
  else
    text = "(Merci de rajouter les articles en paramètres, ou à défaut d’enlever ce modèle)"
    text = text .. m_bases.fait_categorie_contenu('Modèle voir sans paramètre valide')
  end

  return text
end

--- Builds the list for ] and ].
function p.templateSee(frame)
  return _makeText(frame:getParent().args)
end

--- Builds the list for ].
function p.templateSeeOtherScripts(frame)
  local args = frame:getParent().args
  local values = {}

  local i = 1
  while args do
    table.insert(values, args .. " (" .. args .. ")")
    i = i + 2
  end

  return _makeText(values)
end

--- Builds the list for ].
function p.templateSeeOtherSystems(frame)
  local args = frame:getParent().args
  local values = {}
  local lang_code = args

  local i = 2
  while args do
    table.insert(values, args .. "#" .. lang_code .."|" .. args)
    i = i + 1
  end

  return _makeText(values)
end

return p