Module:Icon

From escforumwiki
Revision as of 08:14, 29 August 2021 by en>Mr. Stradivarius (suppress links for modules where the "link" field in the data table is false)
Jump to navigation Jump to search

This module displays an icon depending on the code it is given. It implements Template:Icon.

Usage

From wikitext

From wikitext this module should be used via Template:Icon. Please see the template page for documentation.

From Lua

To use this module from another Lua module, first load it:

local mIcon = require('Module:Icon')

Then you can make icons with the _main function.

mIcon._main(args)

The args variable is a table of arguments. This corresponds to the parameters accepted by Template:Icon - please see the template page for parameter documentation.

Data

The icon data is stored at Module:Icon/data. See the instructions there for how to add and remove icons.



-- This module implements [[Template:Icon]].

require("Module:No globals")

local DATA_MODULE = 'Module:Icon/data'
local p = {}

function p._main(args, data)
	data = data or mw.loadData(DATA_MODULE)
	local code = args.class or args[1]
	local iconData
	if code then
		code = code:match('^%s*(.-)%s*$'):lower() -- trim whitespace and put in lower case
		iconData = data[code]
	end
	if not iconData then
		iconData = data._DEFAULT
	end
	return string.format(
		'[[File:%s%s%s|%s|class=noviewer]]',
		iconData.image,
		iconData.tooltip and '|' .. iconData.tooltip or '',
		iconData.link == false and '|link=' or '',
		args.size or '16x16px'
	)
end

function p.main(frame)
	local args = {}
	for k, v in pairs(frame:getParent().args) do
		args[k] = v
	end
	return p._main(args)
end

return p