Module:Cost: Difference between revisions
From Inkipedia, the Splatoon wiki
SuperHamster (talk | contribs) (Set alt text when icon is standalone) Tag: Reverted |
SuperHamster (talk | contribs) (Restore original alt functionality (set to article name); current usage is inconsistent on whether currency name is added after template (may be worth having currency name output be an optional parameter in the template itself)) Tag: Manual revert |
||
Line 94: | Line 94: | ||
-- Construct the image link | -- Construct the image link | ||
local imageLink = string.format('[[File:%s|%s|%s|link=%s]]', fileName, | |||
local imageLink = string.format('[[File:%s|%s|%s|link | fileSize, currencyIconName, fileLink) | ||
fileSize, currencyIconName, fileLink | |||
-- Constructing output with additional span for quantity if provided | -- Constructing output with additional span for quantity if provided |
Revision as of 09:19, 24 January 2024
Displays an inline currency icon with a text link.
Usage
{{Cost|<game>|<price>|<currency>|<size>|<link>|<textwidth>}}
Markup
*{{Cost|S|200}} *{{Cost|S2|200}} *{{Cost|S3|200}} *{{Cost|S|}} *{{Cost|S|1|sss}} *{{Cost|S2||ac}} *{{Cost|S3|160|bs}} *{{Cost|S|200|cash|48}} *{{Cost|S|200|cash|link}} *{{Cost|S|200|cash|48|link}} *{{Cost|S|200|cash|24|link|60}} *{{Cost|S|200|cash|24| |60}}
Output
local p = {} -- Main for Cost module with the wiki template args function p.main(frame) local args = frame:getParent().args return p.getCost(args) end -- Get the full name of a currency type from its abbreviation. -- Remember in Lua you do not have to specify all parameters. -- If default is not specified then 'nil' is used and returned if not found. function p.getNameFromAbbreviation(abbreviation, default) local currencyTypes = { cash = "Cash", pe = "Power Egg", sss = "Super Sea Snail", ge = "Golden Egg", sard = "Sardinium Shadow", ac = "Ability Chunk Generic", cqp = "CQ Points", sl = "Sheldon License", gsl = "Gold Sheldon License", bs = "Bronze Fish Scale", ss = "Silver Fish Scale", gs = "Gold Fish Scale" } return currencyTypes[abbreviation] or default end -- Get the link text of a currency type from its abbreviation. -- If default is not specified then 'nil' is used and returned if not found. function p.getLinkFromAbbreviation(abbreviation, default) local currencyTypes = { cash = "Cash", pe = "Power Egg", sss = "Super Sea Snail", ge = "Golden Egg", sard = "Sardinium Shadow", ac = "Ability chunk", cqp = "CQ-80#CQ Points", sl = "Sheldon License", gsl = "Sheldon License", bs = "Fish scale", ss = "Fish scale", gs = "Fish scale" } return currencyTypes[abbreviation] or default end function p.getCost(args) local game = args[1] or 'S' local quantity = args[2] local currencyType = args[3] or args['currency'] or 'cash' local size = tonumber(args[4]) or 24 local linkDisplay = args[5] or args[4] or '' local widthStyle = args[6] and ("width:" .. args[6] .. "px;") or '' local currencyIconName = nil -- Special cases for currency names based on game type if currencyType == 'pe' and game == 'S3' then currencyIconName = "Power Egg Alterna" elseif currencyType == 'sard' and game == 'S2' then currencyIconName = "Sardinium Shadow" else currencyIconName = p.getNameFromAbbreviation(currencyType, "Cash") end -- Constructing file name and link local fileName = string.format("%s Icon %s.png", game, currencyIconName) local fileSize = string.format("%dx%dpx", size, size) local fileLink = p.getLinkFromAbbreviation(currencyType, "Cash") -- Now let's construct the display name. -- Dirty hack, for ac, remove 'Generic' if currencyType == 'ac' then currencyIconName = "Ability Chunk" end -- Append 's' for plural forms for the display name if quantity is not '1' -- Exclude sardinium, cqp, and cash if quantity ~= '1' and (currencyType ~= 'sard' and currencyType ~= 'cqp' and currencyIconName ~= 'Cash') then currencyIconName = currencyIconName .. "s" end -- Construct the image link local imageLink = string.format('[[File:%s|%s|%s|link=%s]]', fileName, fileSize, currencyIconName, fileLink) -- Constructing output with additional span for quantity if provided if quantity and quantity ~= '' then local spanTag = mw.html.create('span') spanTag:css('display', 'inline-block'):css('text-align', 'right') if widthStyle and widthStyle ~= '' then spanTag:cssText(widthStyle) end local quantityLink = linkDisplay == 'link' and string.format('[[%s|%s]]', fileLink, quantity) or quantity spanTag:wikitext(' ' .. quantityLink) return imageLink .. tostring(spanTag) else return imageLink end end return p