Module:Icons: Difference between revisions

Icon: Implement alt, noSpan parameters; _SkillReq, _MasteryReq: Use alt parameter & avoid duplicate span tags in result; _Currency: Use alt parameter
(Amend nolink handling)
(Icon: Implement alt, noSpan parameters; _SkillReq, _MasteryReq: Use alt parameter & avoid duplicate span tags in result; _Currency: Use alt parameter)
Line 1: Line 1:
--You can't generate Templates from within Lua due to the loading order, so instead copying the Icon functionality into a module so it can be pulled elsewhere.
--Should function very similarly to how Template:Icon works
local Shared = require("Module:Shared")
local Shared = require("Module:Shared")
local GameData = require("Module:GameData")
local GameData = require("Module:GameData")
Line 377: Line 374:
local img = args.img ~= nil and args.img ~= '' and args.img or link
local img = args.img ~= nil and args.img ~= '' and args.img or link
local class = args.class ~= nil and args.class ~= '' and args.class or ''
local class = args.class ~= nil and args.class ~= '' and args.class or ''
local altText = args.alt ~= nil and args.alt or (notext and (text or link)) or ''
local nospan = args.nospan ~= nil and args.nospan


link = fixPagename(link)
link = fixPagename(link)
Line 462: Line 461:
-- Include a link unless no link -and- no text was requested
-- Include a link unless no link -and- no text was requested
local txtLink = '|link=' .. (nolink and '' or link)
local txtLink = '|link=' .. (nolink and '' or link)
resultText = '[[File:' .. txtImg .. '|' .. txtSize .. 'x' .. txtSize .. 'px' .. txtLink .. ']]'
resultText = '[[File:' .. txtImg .. '|' .. txtSize .. 'x' .. txtSize .. 'px|alt=' .. altText .. txtLink .. ']]'
if class ~= nil and class ~= '' then
if class ~= nil and class ~= '' then
resultText = '<span class="'..class..'">'..resultText..'</span>'
resultText = '<span class="'..class..'">'..resultText..'</span>'
Line 484: Line 483:
if menu then
if menu then
return '{| class="articletable" style="display:inline-block;vertical-align:middle;"\r\n|-\r\n|' .. resultText .. '\r\n|}'
return '{| class="articletable" style="display:inline-block;vertical-align:middle;"\r\n|-\r\n|' .. resultText .. '\r\n|}'
elseif not noicon then
elseif not noicon and not nospan then
return '<span style="display:inline-block">' .. resultText .. '</span>'
return '<span style="display:inline-block">' .. resultText .. '</span>'
else
else
Line 499: Line 498:


function p._SkillReq(skill, level, showText)
function p._SkillReq(skill, level, showText)
local result = p.Icon({skill, type='skill', notext='true'})
local altText = (showText and '') or skill
if showText then
local result = p.Icon({skill, type='skill', notext=(showText and '' or true), nospan=true, alt=altText})
result = result..' [['..skill..']]'
end
if level == nil then level = 'Unknown [[Category:Pages with script errors]]' end
if level == nil then level = 'Unknown [[Category:Pages with script errors]]' end
result = result.." Level "..level
result = result.." Level "..level
Line 527: Line 524:
iconname = linkname..' I'
iconname = linkname..' I'
end
end
local altTextItem = (showText and '') or linkname
local altTextMastery = (showText and '') or '&nbsp;Mastery'


local result = 'Level '..level..' '
local result = 'Level '..level..' '
result = result..p.Icon({linkname, img=iconname, type='item', notext = true})..p.Icon({'Mastery', notext=true})
result = result..p.Icon({linkname, img=iconname, type='item', notext=true, nospan=true, alt=altTextItem})..p.Icon({'Mastery', notext=true, nospan=true, alt=altTextMastery})
if showText then result = result..'[['..linkname..']] [[Mastery]]' end
if showText then result = result..'[['..linkname..']] [[Mastery]]' end
result = '<span style="display:inline-block">'..result..'</span>'
result = '<span style="display:inline-block">'..result..'</span>'
Line 543: Line 542:
end
end


function p._Currency(fileName, link, amt, maxAmt)
function p._Currency(fileName, link, altText, amt, maxAmt)
local amtText = formatnum(amt)
local amtText = formatnum(amt)
if maxAmt ~= nil and maxAmt >= amt then
if maxAmt ~= nil and maxAmt >= amt then
Line 555: Line 554:
fileText = fileText .. '|link=' .. link
fileText = fileText .. '|link=' .. link
end
end
fileText = fileText .. ']]&nbsp;'
fileText = fileText .. '|alt=' .. ((altText == nil and '') or altText) .. ']]&nbsp;'
end
end


Line 562: Line 561:


function p.GP(amt, maxamt)
function p.GP(amt, maxamt)
return p._Currency('Coins.svg', 'Coins', amt, maxamt)
return p._Currency('Coins.svg', 'Coins', 'GP', amt, maxamt)
end
end


function p.SC(amt, maxamt)
function p.SC(amt, maxamt)
return p._Currency('Slayer Coins.svg', 'Currency#Slayer Coins', amt, maxamt)
return p._Currency('Slayer Coins.svg', 'Currency#Slayer Coins', 'SC', amt, maxamt)
end
end


function p.RC(amt, maxamt)
function p.RC(amt, maxamt)
return p._Currency('Raid_Coins.svg', 'Currency#Raid Coins', amt, maxamt)
return p._Currency('Raid_Coins.svg', 'Currency#Raid Coins', 'RC', amt, maxamt)
end
end