Module:Bac à sable
Utilisation
Cette page est destinée à vous aider à vous familiariser avec le système de création et modification de modules de Wikipédia.
Il est possible de tester le résultat de votre module dans la page Modèle:Bac à sable (placez-y le code {{#invoke:Bac à sable|nom_fonction|arg1|arg2|…}}
).
Vous pouvez consulter le Manuel de référence complet en français sur www.mediawiki.org, Projet:Scribunto/Guide, aide:module, ou discuter avec les autres membres du projet Scribunto.
La documentation de ce module est générée par le modèle {{Documentation module}}.
Elle est incluse depuis sa sous-page de documentation. Veuillez placer les catégories sur cette page-là.
Les éditeurs peuvent travailler dans le bac à sable (créer).
Voir les statistiques d'appel depuis le wikicode sur l'outil wstat et les appels depuis d'autres modules.
local p = {}
-- Table des codes couleur
-- ["(code couleur)"] = "#(couleur)"
local codesTable = {
["Ind."] = "#C0C0C0",
["Ishin2015"] = "#B8CE43",
["Kaishintō"] = "#0C7E97",
["Komeito1998"] = "#F55881",
["PCJ"] = "#CC222C",
["PDC"] = "#004097",
["PDJ"] = "#E60000",
["PDP 2018"] = "#FFD700",
["PE"] = "#18643A",
["PL-1998"] = "#000099",
["PLD"] = "#41A12E",
["RW"] = "#E3007F",
["TF"] = "#18643A"
}
--[[ Fonction qui renvoie la couleur HEX associée au code d'un parti politique et permet si besoin de la personnaliser avec des propriétés CSS :
si le code couleur rentré commence par un tiret, renvoie la couleur seule ;
si non, renvoie l'attribut HTML style contenant les propriétés :
background-color:#(couleur);
width:(largeur); si le paramètre largeur est complété
la valeur du paramètre style s'il est complété ]]
function p.couleurParti(frame)
-- Récupération des paramètres
local pframe = frame:getParent()
local args = pframe.args
local premierParametre = args[1]
local largeur = args.largeur
local styleBonus = args.style
-- Autres variables
local premierCaractere
local vide
local tiret
local code
if premierParametre then
premierCaractere = mw.ustring.sub(premierParametre, 1, 1) -- Isole le premier caractère du code couleur rentré
else
vide = true -- Le modèle est considéré comme vide si le paramètre 1 n'est pas défini
end
-- Vérifie si le code couleur rentré commence par un tiret et adapte les variables en conséquence
if vide == nil then
if premierCaractere == '-' then
tiret = true
code = mw.ustring.sub(premierParametre, 2) -- Retrait du tiret pour la recherche dans la table des codes
else
code = premierParametre
end
end
-- Variables pour le rendu
local couleur = tostring(codesTable[code]) --[[ Récupère la couleur dans la table des codes
et applique tostring() pour éviter une erreur de concaténation ci-dessous si couleur == nil ]]
local sortieDebut = 'style="background-color:' .. couleur .. ';'
-- Rendu
if vide == true or couleur == 'nil' then -- Si le paramètre 1 est absent ou que la recherche dans la table n'a rien donné
return ''
elseif tiret == true then
return mw.text.nowiki(couleur) -- Applique nowiki pour ne pas générer une liste numérotée
elseif largeur or styleBonus then
local sortieLargeur = ' width:' .. tostring(largeur) .. ';'
if ( largeur and styleBonus ) and ( largeur ~= '' and styleBonus ~= '' ) then
return sortieDebut .. sortieLargeur .. ' ' .. styleBonus .. '"'
elseif ( largeur and ( not styleBonus or styleBonus == '' ) ) and largeur ~= '' then
return sortieDebut .. sortieLargeur .. '"'
elseif ( styleBonus and ( not largeur or largeur == '' ) ) and styleBonus ~= '' then
return sortieDebut .. ' ' .. styleBonus .. '"'
else
return sortieDebut .. '"'
end
else
return sortieDebut .. '"'
end
end
function p.test(frame)
-- Fonction pour mettre en forme les paramètres
local function mef(parametre)
if type(parametre) ~= 'string' then
parametre = ''
end
return parametre
end
-- Récupération des paramètres
local pframe = frame:getParent()
local args = pframe.args
local premierParametre = mef(args[1])
local largeur = mef(args.largeur)
local styleBonus = mef(args.style)
-- Vérification de la présence d'un tiret en première position
local tiret = false
if mw.ustring.sub(premierParametre, 1, 1) == '-' then
tiret = true
end
-- Fonction pour récupérer la couleur dans la table des codes
local function obtenirCouleur(code)
if tiret == true then
code = mw.ustring.sub(code, 2) -- Retrait du tiret pour la recherche dans la table des codes
end
return codesTable[code]
end
-- Récupération de la couleur
local couleur = mef(obtenirCouleur(premierParametre))
-- Fonction générant l'attribut HTML style
local function attribut(style)
if largeur ~= '' then
style = 'style="background-color: ' .. couleur .. '; width: ' .. largeur .. ';' .. styleBonus .. '"'
else
style = 'style="background-color: ' .. couleur .. ';' .. styleBonus .. '"'
end
return style
end
-- Résultat
if couleur == '' then
return ''
elseif tiret == true then
return mw.text.nowiki(couleur) -- Applique nowiki pour ne pas générer une liste numérotée
else
return attribut()
end
end
return p