Thismodule is rated asready for general use. It has reached a mature state, is considered relatively stable and bug-free, and may be used wherever appropriate. It can be mentioned onhelp pages and other Wikipedia resources as an option for new users. To minimise server load and avoid disruptive output, improvements should be developed throughsandbox testing rather than repeated trial-and-error editing.
This module displays an icon depending on the code it is given. It implementsTemplate:Icon.
Usage
From wikitext
From wikitext this module should be used viaTemplate:Icon in most cases. Please see the template page for documentation. In cases where lots of icons cause the page to exceed thepost-expand include size limit,{{#invoke:Icon||icon name}} may be used instead of{{Icon|icon name}}.
From Lua
To use this module from another Lua module, first load it:
localmIcon=require('Module:Icon')
Then you can make icons with the _main function.
mIcon._main(args)
Theargs variable is a table of arguments. This corresponds to the parameters accepted byTemplate:Icon - please see the template page for parameter documentation.
Data
The icon data is stored atModule:Icon/data. See the instructions there for how to add and remove icons.
-- This module implements [[Template:Icon]].require("strict")localyesNo=require("Module:Yesno")localgetArgs=require("Module:Arguments").getArgslocalp={}-- Determine whether we're being called from a sandboxlocalsandbox=mw.getCurrentFrame():getTitle():find('sandbox',1,true)and'/sandbox'or''-- Implements [[Template:Icon]]-- Returns the icon image corresponding to a string (like 'B')functionp._main(args,data)localdata_module='Module:Icon/data'..sandboxdata=dataormw.loadData(data_module)localcode=args.classorargs[1]localiconDataifcodethencode=code:match('^%s*(.-)%s*$'):lower()-- trim whitespace and put in lower caseiconData=data[code]endifnoticonDatatheniconData=data._DEFAULTendreturnstring.format('[[File:%s%s%s|%s|class=noviewer|alt=%s]]',iconData.image,iconData.tooltipand'|'..iconData.tooltipor'',iconData.link==falseand'|link='or'',args.sizeor'16x16px',iconData.altor'')end-- Implements [[Template:Icon link]], a superset of [[Template:Icon]]-- Returns an icon, plus a suitably formatted wikilinkfunctionp._link(args,data)args.size=args.sizeorargs.iconsizelocalicon=p._main(args,data)-- If no link given in args[2], default back to [[Template:Icon]]ifnotargs[2]thenreturniconend-- Strip wiki markup out of linklocalgetPlain=require("Module:Text").Text().getPlainlocallink=getPlain(args[2])localdisplay=args[3]orargs[2]-- italicize display string, if requestedifyesNo(args.i)oryesNo(args.italic)oryesNo(args.italics)thendisplay='<i>'..display..'</i>'end-- if display is link, just use standard wlinkiflink==displaythenreturn'<span class="nowrap">'..icon..' </span>[['..link..']]'endreturn'<span class="nowrap">'..icon..' </span>[['..link..'|'..display..']]'endfunctionp.main(frame)localargs=getArgs(frame,{parentFirst=true})returnp._main(args)endfunctionp.link(frame)localargs=getArgs(frame,{parentFirst=true})returnp._link(args)endp['']=function(frame)returnp._main(frame.args)endreturnp