Module:Icône

De Starfield Wiki
Documentation[voir] [modifier] [purger]

Ce module implémente le modèle {{Icône}}.

Utilisation

Fonctions exportables :

  • icons_table() – génère un tableau des icônes disponibles, utile uniquement pour la documentation du modèle {{Icône}} ;
  • icon(frame) – voir la documentation du modèle {{Icône}}.

Autres fonctions :

  • les fonctions ci-dessus avec un « _ » avant le nom peuvent être appelées directement depuis lua, avec les paramètres dans une table.

Pour ajouter une icône, voir Module:Icône/Données

local p = {}

local DATA_MODULE = "Module:Icône/Données"

-- Génère un tableau contenant tous les icônes (pour la documentation)
function p.icons_table()
	icons = mw.loadData(DATA_MODULE)
	
	local icons_table = '{| class="wikitable"\n!Icône!!Infobulle!!Code\n'
	
	names = {}
    for k in pairs(icons) do
        table.insert(names, k)
    end
    table.sort(names)

	local icon, row
	for k, name in ipairs(names) do
		icon = icons[name]
		icons_table = icons_table .. string.format(
			"|-\n|[[Fichier:%s|link=|18x18px|alt=]]||%s||<code><nowiki>{{icône|%s}}</nowiki></code>\n",
			icon.image,
			icon.tooltip or "",
			name
		)
	end
	
	return icons_table .. "|}"
end

-- Génère l'icône identifiée par son nom
function p._icon(args)
	name = args[1]
	if name == nil then
		error("Paramètre 1 obligatoire")
	end
	
	data = mw.loadData(DATA_MODULE)
	data = data[name:lower()]
	if data == nil then
		error(string.format("Icône inconnue : %s", name))
	end
	
	tooltip = args["infobulle"] or data.tooltip
	
	return string.format(
		"[[Fichier:%s%s|link=%s|%s|class=icon noviewer|alt=%s]]",
		data.image,
		tooltip and '|' .. tooltip or '',
		args["lien"] or "",
		args["taille"] or data.size or "18x18px",
		args["alt"] or data.alt or ""
	)
end

-- Fonction générant une icône appelée par un modèle
function p.icon(frame)
	local args = {}
	local argsParent = frame:getParent().args
	for cle, val in pairs(argsParent) do
		if val then
			args[cle] = mw.text.trim(val)
		end
	end
	return p._icon(args)
end

return p