Module:Abréviation
Ce module prend en charge les abréviations et leurs manipulations.
Ajouter une abréviation
Il suffit d'ajouter une paire de clé-valeur à la collection ABBR
.
- La clé correspond à l'abréviation et doit être écrit en lettres capitales.
- La valeur correspond au libellé associé à l'abréviation.
Merci d'ajouter la paire dans l'ordre alphabétique des clés.
Présentation des fonctions
contains()
: Permet de vérifier l'existence d'une abréviation.name()
: Retourne le libellé d'une abréviation.categories()
: Retourne une chaîne de caractères composée des catégories formées des abréviations et du sujet fournis par l'utilisateur.infobox_links()
: Utilisée pour les en-têtes d'infobox, cette fonction retourne une chaîne de caractères composée de liens formés des abréviations et du sujet fournis par l'utilisateur.
local p = {}
------------------------------------------------------
-- Référentiel des abréviations --
-- Merci de ne pas dupliquer ces données ailleurs --
-- Si un nouveau jeu sort (\o/), merci de l"ajouter --
------------------------------------------------------
local ABBR = {
SF = "Starfield",
WIKI = "Starfield Wiki",
}
------------------------------------------------------
-- Vérifie l'existence d'une abréviation
function p.contains(args)
return ABBR[(args[1] or ""):upper()] ~= nil
end
-- Retourne le mot complet d"une abréviation
function p.name(args)
return ABBR[(args[1] or ""):upper()]
end
-- Génère une liste de catégories à partir de plusieurs abréviations.
-- Si on souhaite par exemple générer les catégories Lieu pour SF et WIKI,
-- alors la fonction générera la chaîne suivante.
-- `[[Catégorie:Lieu de Starfield]][[Catégorie:Lieu de Starfield Wiki]]`
-- Il est possible de définir une clé de tri.
function p.categories(args)
local abbrs = args[1]
local subject = args[2] or ""
local sortkey = args[3]
-- On a au moins besoin des abréviations sinon on ne
-- génère rien.
if abbrs == nil then
return nil
end
-- Les abréviations sont séparées par des virgules
-- On coupe la chaîne pour obtenir une liste.
abbrs = mw.text.split(abbrs, "%s*,%s*")
local categories = ""
local prefix = ""
if subject then
prefix = subject .. " de "
end
if sortkey then
sortkey = "|" .. sortkey
else
sortkey = ""
end
for i, abbr in ipairs(abbrs) do
local name = ABBR[abbr:upper()]
if name ~= nil then
category = string.format(
"[[Catégorie:%s%s%s]]",
prefix,
name,
sortkey
)
categories = categories .. category
end
end
if categories == "" then
return nil
end
return categories
end
-- Génère une liste de lien à partir de plusieurs abréviations.
-- Utilisée dans l'en-tête des infobox.
-- Si on souhaite par exemple générer les catégories Lieu pour SF et WIKI,
-- alors la fonction formera une chaîne de ce genre.
-- `[[Lieu de Starfield]], [[Lieu de Starfield Wiki|Starfield Wiki]]`
-- Il est possible de définir le séparateur de liens.
function p.infobox_links(args)
local abbrs = args[1]
local link = args["lien"] or args[2]
local subject = args["sujet"] or args[3]
local separator = args["séparateur"] or ", "
-- On a au moins besoin des abréviations sinon on ne
-- génère rien.
if abbrs == nil then
return nil
end
-- Les abréviations sont séparées par des virgules
-- On coupe la chaîne pour obtenir une liste.
abbrs = mw.text.split(abbrs, "%s*,%s*")
local link_prefix = ""
if link then
link_prefix = link .. " de "
end
local subject_prefix = ""
if subject then
subject_prefix = subject .. " de "
end
local links = ""
local j = 0
for i, abbr in ipairs(abbrs) do
local name = ABBR[abbr:upper()]
if name ~= nil then
j = j + 1
if j == 1 then
links = string.format(
"[[%s%s|%s''%s'']]",
link_prefix,
name,
subject_prefix,
name
)
else
links = string.format(
"%s%s[[%s%s|''%s'']]",
links,
separator,
link_prefix,
name,
name
)
end
end
end
if links == "" then
return nil
end
return links
end
return p