Module:Icon/sandbox
See also the companion subpage for test cases (run).
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 displays an icon depending on the code it is given. It implements Template:Icon.
Usage
[edit ]From wikitext
[edit ]From wikitext this module should be used via Template:Icon in most cases. Please see the template page for documentation. In cases where lots of icons cause the page to exceed the post-expand include size limit, {{#invoke:Icon||icon name}}
may be used instead of {{Icon|icon name}}
.
From Lua
[edit ]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)
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
[edit ]The icon data is stored at Module:Icon/data. See the instructions there for how to add and remove icons.
Editors can experiment in this module's sandbox (edit | diff) and testcases (edit | run) pages.
Add categories to the /doc subpage. Subpages of this module.
-- This module implements [[Template:Icon]]. require("strict") localyesNo=require("Module:Yesno") localgetArgs=require("Module:Arguments").getArgs localgetPlain=nil localp={} -- Determine whether we're being called from a sandbox localsandbox=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'..sandbox data=dataormw.loadData(data_module) localcode=args.classorargs[1] localiconData ifcodethen code=code:match('^%s*(.-)%s*$'):lower()-- trim whitespace and put in lower case iconData=data[code] end ifnoticonDatathen iconData=data._DEFAULT end returnstring.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 wikilink functionp._link(args,data) args.size=args.sizeorargs.iconsize localicon=p._main(args,data) -- If no link given in args[2], default back to [[Template:Icon]] ifnotargs[2]then returnicon end -- Strip wiki markup out of link getPlain=getPlainorrequire("Module:Text").Text().getPlain locallink=getPlain(args[2]) localdisplay=args[3]orargs[2] -- italicize display string, if requested ifyesNo(args.i)oryesNo(args.italic)oryesNo(args.italics)then display='<i>'..display..'</i>' end -- if display is link, just use standard wlink iflink==displaythen return'<span class="nowrap">'..icon..' </span>[['..link..']]' end return'<span class="nowrap">'..icon..' </span>[['..link..'|'..display..']]' end functionp.main(frame) localargs=getArgs(frame,{parentFirst=true}) returnp._main(args) end functionp.link(frame) localargs=getArgs(frame,{parentFirst=true}) returnp._link(args) end p['']=function(frame)returnp._main(frame.args)end returnp