Module:Cost
From Inkipedia, the Splatoon wiki
Displays an inline currency icon with a text link.
Usage
{{Cost|<game>|<price>|<currency>|<size>|<link>|<textwidth>}}
game
|
Unnamed, required | The game that the cost belongs to. Must be one of the following:
| |||
price
|
Unnamed, required (may be empty) | The quantity to show as the cost. If set empty, the template will show the icon only. Note that this template also accepts space (' ') which handles differently to empty. Use 0 or Free for free items.
| |||
currency
|
Unnamed, optional | The currency to use. The default value is cash .
| |||
Must be one of the following: | S | S2 | S3 | ||
cash |
|||||
pe |
File:S3 Icon Power Egg.png | ||||
sss |
|||||
ge |
|||||
sard |
|||||
ac |
|||||
cqp |
|||||
sl |
|||||
gsl |
|||||
bs |
|||||
ss |
|||||
gs |
|||||
mb |
|||||
pl |
|||||
size
|
Unnamed, optional | The icon size for the currency icon. The default is 24 .
| |||
link
|
Unnamed, optional | If present, the amount text will be a link to the currency's page. | |||
textwidth
|
Unnamed, optional | Requries size and link to both be present.If specified, the label will be set inside a right-aligned rectangle of the specified width |
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 == 'RotM' then currencyIconName = "Power Egg" 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