Module:Abréviation

Révision datée du 18 juillet 2022 à 22:03 par Kims (discussion | contributions) (Page créée avec « local p = {} local tools = require('Module:Outils') ------------------------------------------------------ ------------ Référentiel des jeux Fallout ------------ --- Merci de ne pas dupliquer ces données ailleurs --- -- Si un nouveau jeu sort (\o/), merci de l'ajouter -- ------------------------------------------------------ local abr = { SFD = 'Starfield', WIKI = 'Starfield wiki', } --------------------------------------------... »)
(diff) ← Version précédente | Voir la version actuelle (diff) | Version suivante → (diff)
Documentation[voir] [modifier] [purger]

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 = {}

local tools = require('Module:Outils')

------------------------------------------------------
------------ Référentiel des jeux Fallout ------------
--- Merci de ne pas dupliquer ces données ailleurs ---
-- Si un nouveau jeu sort (\o/), merci de l'ajouter --
------------------------------------------------------

local abr = {
    SFD            = 'Starfield',
    WIKI           = 'Starfield wiki',
}

------------------------------------------------------

-- Vérifie l'existence d'une abréviation
function p.contains(frame)
	local arg = tools.extractArgs(frame)[1] or ''
	return abr[arg:upper()] ~= nil
end

-- Retourne le nom d'un jeu
function p.name(frame)
	local arg = tools.extractArgs(frame)[1] or ''
	return abr[arg:upper()] or ''
end

-- Génère une liste de catégories
function p.categories(frame)
	local args = tools.extractArgs(frame)
	
	local categories = ''
	
	local abbs = args[1] or ''
	local subject = args[2]
	local sortkey = args[3]
	
	if #abbs > 0 then
		abbs = mw.text.split(abbs, "%s*,%s*")
	end
	
	if #abbs > 0 then
		local prefix = ''
		if subject then
			prefix = subject .. ' de '
		end
		
		if sortkey then
			sortkey = '|' .. sortkey
		else
			sortkey = ''
		end
		
		for i, abb in ipairs(abbs) do
			local gameName = abr[abb:upper()]
			
			if gameName then
				categories = categories .. '[[Catégorie:' .. prefix .. gameName .. sortkey .. ']]'
			end
		end
	end
	
	if categories == '' then categories = nil end
	return categories
end

-- Génère une liste de lien
function p.links(frame)
	local args = tools.extractArgs(frame)
	
	local links = ''
	
	local abbs      = args[1] or ''
	local link      = args['lien'] or args[2]
	local subject   = args['sujet'] or args[3]
	local separator = args['séparateur'] or ', '
	
	if #abbs > 0 then
		abbs = mw.text.split(abbs, "%s*,%s*")
	end

	if #abbs > 0 then
		local linkPrefix = ''
		if link then
			linkPrefix = link .. ' de '
		end
		
		local subjectPrefix = ''
		if subject then
			subjectPrefix = subject .. ' de '
		end
		
		for i, abb in ipairs(abbs) do
			local gameName = abr[abb:upper()]
			
			if gameName then 
				if i == 1 then
					if abb:upper() == 'NON' then
						links = subject .. ' ' .. gameName
					else
						links = '[['..linkPrefix..gameName..'|'..subjectPrefix..'\'\''..gameName..'\'\']]'
					end
				else
					links = links..separator..'[['..linkPrefix..gameName..'|\'\''..gameName..'\'\']]'
				end
			end
		end
	elseif link then
		links = '[['..link..'|'..(subject or link)..']]'
	elseif subject then
		links = subject
	end
	
	if links == '' then links = nil end
	return links
end

return p