Module:Icon
From CryptoWiki
This module displays an icon depending on the code it is given. It implements Template:Icon.
This Lua module is used on approximately 530,000 pages, or roughly 7199% of all pages. To avoid major disruption and server load, any changes should be tested in the module's /sandbox or /testcases subpages, or in your own module sandbox. The tested changes can be added to this page in a single edit. Consider discussing changes on the talk page before implementing them. |
This module is subject to page protection. It is a highly visible module in use by a very large number of pages, or is substituted very frequently. Because vandalism or mistakes would affect many pages, and even trivial editing might cause substantial load on the servers, it is protected from editing. |
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:
<syntaxhighlight lang="lua"> local mIcon = require('Module:Icon') </syntaxhighlight>
Then you can make icons with the _main function.
<syntaxhighlight lang="lua"> mIcon._main(args) </syntaxhighlight>
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