Module:Top icons
Module documentation
This documentation is transcluded from Module:Top icons/doc. [edit] [history] [purge]
Module:Top icons's function main is invoked by Template:External.
This module is used in Template:External to generate the top icons. It can also be called from other modules using its helper function.
This module is a helper module to be used by other modules; it may not designed to be invoked directly. See RuneScape:Lua/Helper modules for a full list and more information. For a full list of modules using this helper click here
Function | Type | Use |
---|---|---|
_main(args) | String | Returns a string that adds top icons to the page. args must be a table of arguments. Numbered arguments must have values of rs , rsc , meta or wp . To provide a specific page name on the top icon link, specify the wiki name as the param and the external page name as the value. |
--<nowiki>
local p = {}
local sites = {
rs = {
params = { 'rs' },
interwiki = 'rsw',
wikiname = 'The RuneScape Wiki',
},
rsc = {
params = { 'rsc' },
interwiki = 'classicrsw',
wikiname = 'The RuneScape Classic Wiki',
},
meta = {
params = { 'meta' },
interwiki = 'meta',
wikiname = 'The Meta Weird Gloop Wiki',
},
wp = {
params = { 'wp' },
interwiki = 'wikipedia',
wikiname = 'Wikipedia',
},
}
local order = { 'rs', 'rsc', 'meta', 'wp' }
local allparams = {}
function p.main(frame)
local args = frame:getParent().args
return p._main(args)
end
function p._main(args)
local pagename = mw.title.getCurrentTitle().fullText
local vals = {}
-- create allparams
for s,t in pairs(sites) do
for _,v in ipairs(t.params) do
allparams[v] = s
end
end
-- loop named params
for i,v in pairs(allparams) do
if args[i] and not vals[v] then
vals[v] = args[i]
end
end
-- loop unnamed params
local i = 1
local v
while args[i] do
v = allparams[args[i]]
if v and not vals[v] then
vals[v] = pagename
end
i = i + 1
end
local ret = mw.html.create('div')
ret:addClass('noexcerpt noprint nomobile navigation-not-searchable rs-external-header-links'):css('display', 'none')
for _,v in ipairs(order) do
if vals[v] then
local span = ret:tag('span')
span:wikitext(vals[v])
:addClass('rs-header-icon rs-header-icon-' .. v)
:attr({
['data-wikiname'] = sites[v].wikiname,
['data-interwiki'] = sites[v].interwiki,
['data-page'] = vals[v],
})
end
end
return tostring(ret)
end
return p
--</nowiki>