| This Lua module is used on
approximately 604,000 pages, or roughly 1% 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 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.
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
(
"strict"
)
local
yesNo
=
require
(
"Module:Yesno"
)
local
getArgs
=
require
(
"Module:Arguments"
).
getArgs
local
getPlain
=
nil
local
p
=
{}
-- Determine whether we're being called from a sandbox
local
sandbox
=
mw
.
getCurrentFrame
():
getTitle
():
find
(
'sandbox'
,
1
,
true
)
and
'/sandbox'
or
''
-- Implements [[Template:Icon]]
-- Returns the icon image corresponding to a string (like 'B')
function
p
.
_main
(
args
,
data
)
local
data_module
=
'Module:Icon/data'
..
sandbox
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|alt=%s]]'
,
iconData
.
image
,
iconData
.
tooltip
and
'|'
..
iconData
.
tooltip
or
''
,
iconData
.
link
==
false
and
'|link='
or
''
,
args
.
size
or
'16x16px'
,
iconData
.
alt
or
''
)
end
-- Implements [[Template:Icon link]], a superset of [[Template:Icon]]
-- Returns an icon, plus a suitably formatted wikilink
function
p
.
_link
(
args
,
data
)
args
.
size
=
args
.
size
or
args
.
iconsize
local
icon
=
p
.
_main
(
args
,
data
)
-- If no link given in args[2], default back to [[Template:Icon]]
if
not
args
[
2
]
then
return
icon
end
-- Strip wiki markup out of link
getPlain
=
getPlain
or
require
(
"Module:Text"
).
Text
().
getPlain
local
link
=
getPlain
(
args
[
2
])
local
display
=
args
[
3
]
or
args
[
2
]
-- italicize display string, if requested
if
yesNo
(
args
.
i
)
or
yesNo
(
args
.
italic
)
or
yesNo
(
args
.
italics
)
then
display
=
'<i>'
..
display
..
'</i>'
end
-- if display is link, just use standard wlink
if
link
==
display
then
return
'<span class="nowrap">'
..
icon
..
' </span>[['
..
link
..
']]'
end
return
'<span class="nowrap">'
..
icon
..
' </span>[['
..
link
..
'|'
..
display
..
']]'
end
function
p
.
main
(
frame
)
local
args
=
getArgs
(
frame
,{
parentFirst
=
true
})
return
p
.
_main
(
args
)
end
function
p
.
link
(
frame
)
local
args
=
getArgs
(
frame
,{
parentFirst
=
true
})
return
p
.
_link
(
args
)
end
return
p