Aller au contenu

« Module:Charte » : différence entre les versions

De Wikiquestia
Aucun résumé des modifications
Balise : Révoqué
Aucun résumé des modifications
Balises : Révocation manuelle Révoqué
Ligne 1 : Ligne 1 :
local p = {}
local p = {}


-- Table des chartes avec leurs couleurs spécifiques
local chartes = {
local chartes = {
biographie = {
biographie = {
titre     = "#6eacdc9c",
titre           = "#6eacdc9c",
soustitre = "#a9c8e09c",
soustitre       = "#a9c8e09c",
hr       = "#6eacdc9c",
hr               = "#6eacdc9c",
},
},
empire = {
empire = {
titre     = "#993333b0",
titre           = "#993333b0",
soustitre = "#831f1fc7",
soustitre       = "#831f1fc7",
hr       = "#993333b0",
hr               = "#993333b0",
},
},
geographie = {
geographie = {
titre     = "#209a57d9",
titre           = "#209a57d9",
soustitre = "#209a57a8",
soustitre       = "#209a57a8",
hr       = "#209a57d9",
hr               = "#209a57d9",
},
},
darkgods = {
darkgods = {
titre     = "#000000cc",
titre           = "#000000cc",
soustitre = "#000000a3",
soustitre       = "#000000a3",
hr       = "#000000a3",
hr               = "#000000a3",
color     = "#ffffff", -- seul cas avec texte blanc
color           = "#ffffff",
},
},
defaut = {
defaut = {
titre     = "#eaecf0",
titre           = "#eaecf0",
soustitre = "#a2a9b1",
soustitre       = "#a2a9b1",
hr       = "#eaecf0",
hr               = "#eaecf0",
}
}
}
}


-- Table des titres automatiques des sous-titres selon la charte
local soustitres = {
local soustitres = {
biographie = "Informations biographiques",
biographie = "Informations biographiques",
Ligne 40 : Ligne 38 :
}
}


-- Vérifie si une valeur est un code hexadécimal valide
local function isHexCode(value)
local function isHexCode(value)
return type(value) == "string" and mw.ustring.match(value, "^#%x%x%x%x%x%x%x?$") ~= nil
return type(value) == "string" and mw.ustring.match(value, "^#%x%x%x%x%x%x%x?$") ~= nil
end
end


-- Fonction centrale pour récupérer une couleur selon la charte et le type
-- Fonction interne qui prend des paramètres explicites
local function couleurDirect(charte, type)
local function couleurDirect(charte, type)
charte = mw.ustring.lower(charte or "defaut")
charte = charte or "defaut"
type = type or "titre"
type = type or "titre"


-- Cas spécial : couleur du texte
if type == "texte" then
if type == "texte" then
if chartes[charte] and chartes[charte].color then
if chartes[charte] and chartes[charte].color then
return chartes[charte].color
return chartes[charte].color
else
else
return "" -- pas de couleur forcée = hérite du style global
return "#000000"
end
end
 
if type == "soustitre_color" then
if chartes[charte] and chartes[charte].soustitre_color then
return chartes[charte].soustitre_color
else
return "#000000"
end
end
end
end


-- Si on passe un code hexadécimal directement
if isHexCode(charte) then
if isHexCode(charte) then
return charte
return charte
end
elseif chartes[charte] and chartes[charte][type] then
 
-- Si la charte et le type existent dans la table
if chartes[charte] and chartes[charte][type] then
return chartes[charte][type]
return chartes[charte][type]
else
return chartes["defaut"][type] or "#dddddd"
end
end
-- Sinon, retour vers la charte "defaut"
return chartes["defaut"][type] or "#dddddd"
end
end


-- Fonction appelée via #invoke sur le wiki
-- Fonction exportée appelée par #invoke
function p.couleur(frameOrCharte, typeOrNil)
function p.couleur(frameOrCharte, typeOrNil)
if type(frameOrCharte) == "table" and frameOrCharte.args then
if type(frameOrCharte) == "table" and frameOrCharte.args then
-- Appel via #invoke (frame)
local args = frameOrCharte.args
local args = frameOrCharte.args
return couleurDirect(args["charte"], args["type"])
return couleurDirect(args["charte"], args["type"])
else
else
-- Appel direct depuis Lua avec params
return couleurDirect(frameOrCharte, typeOrNil)
return couleurDirect(frameOrCharte, typeOrNil)
end
end
end
end


-- Fonction pour générer un nom de sous-titre automatique (si non défini dans le modèle)
-- Fonction pour afficher le texte par défaut du sous-titre (idem avec frame)
function p.soustitre(frame)
function p.soustitre(frame)
local charte = frame.args["charte"] or "defaut"
local charte = frame.args["charte"] or "defaut"

Version du 7 juin 2025 à 08:58

La documentation pour ce module peut être créée à Module:Charte/doc

local p = {}

local chartes = {
	biographie = {
		titre            = "#6eacdc9c",
		soustitre        = "#a9c8e09c",
		hr               = "#6eacdc9c",
	},
	empire = {
		titre            = "#993333b0",
		soustitre        = "#831f1fc7",
		hr               = "#993333b0",
	},
	geographie = {
		titre            = "#209a57d9",
		soustitre        = "#209a57a8",
		hr               = "#209a57d9",
	},
	darkgods = {
		titre            = "#000000cc",
		soustitre        = "#000000a3",
		hr               = "#000000a3",
		color            = "#ffffff",
	},
	defaut = {
		titre            = "#eaecf0",
		soustitre        = "#a2a9b1",
		hr               = "#eaecf0",
	}
}

local soustitres = {
	biographie = "Informations biographiques",
	empire     = "Données impériales",
	geographie = "Informations géographiques",
	darkgods   = "Entité obscure",
	defaut     = "Informations générales"
}

local function isHexCode(value)
	return type(value) == "string" and mw.ustring.match(value, "^#%x%x%x%x%x%x%x?$") ~= nil
end

-- Fonction interne qui prend des paramètres explicites
local function couleurDirect(charte, type)
	charte = charte or "defaut"
	type = type or "titre"

	if type == "texte" then
		if chartes[charte] and chartes[charte].color then
			return chartes[charte].color
		else
			return "#000000"
		end
	end

	if type == "soustitre_color" then
		if chartes[charte] and chartes[charte].soustitre_color then
			return chartes[charte].soustitre_color
		else
			return "#000000"
		end
	end

	if isHexCode(charte) then
		return charte
	elseif chartes[charte] and chartes[charte][type] then
		return chartes[charte][type]
	else
		return chartes["defaut"][type] or "#dddddd"
	end
end

-- Fonction exportée appelée par #invoke
function p.couleur(frameOrCharte, typeOrNil)
	if type(frameOrCharte) == "table" and frameOrCharte.args then
		-- Appel via #invoke (frame)
		local args = frameOrCharte.args
		return couleurDirect(args["charte"], args["type"])
	else
		-- Appel direct depuis Lua avec params
		return couleurDirect(frameOrCharte, typeOrNil)
	end
end

-- Fonction pour afficher le texte par défaut du sous-titre (idem avec frame)
function p.soustitre(frame)
	local charte = frame.args["charte"] or "defaut"
	charte = mw.ustring.lower(charte)
	return soustitres[charte] or soustitres["defaut"]
end

return p