Module:Cost: Difference between revisions
From Inkipedia, the Splatoon wiki
(Don't create an empty span block) |
Yoshifan52 (talk | contribs) (Added SO's Membux and Prlz) |
||
(12 intermediate revisions by 5 users not shown) | |||
Line 4: | Line 4: | ||
function p.main(frame) | function p.main(frame) | ||
local args = frame:getParent().args | local args = frame:getParent().args | ||
return p.getCost( | |||
local game = args[1] or 'S' | |||
local quantity = args[2] | |||
local currencyType = args[3] or args['currency'] | |||
local size = tonumber(args[4]) | |||
local linkDisplay = args[5] or args[4] | |||
local widthStyle = args[6] and ("width:" .. args[6] .. "px;") | |||
return p.getCost(game, quantity, currencyType, size, linkDisplay, widthStyle) | |||
end | end | ||
Line 11: | Line 19: | ||
-- If default is not specified then 'nil' is used and returned if not found. | -- If default is not specified then 'nil' is used and returned if not found. | ||
function p.getNameFromAbbreviation(abbreviation, default) | function p.getNameFromAbbreviation(abbreviation, default) | ||
local currencyTypes = { | local currencyTypes = { | ||
cash = "Cash", | cash = "Cash", | ||
Line 18: | Line 25: | ||
ge = "Golden Egg", | ge = "Golden Egg", | ||
sard = "Sardinium", | sard = "Sardinium Shadow", | ||
ac = "Ability Chunk Generic", | ac = "Ability Chunk Generic", | ||
Line 29: | Line 36: | ||
ss = "Silver Fish Scale", | ss = "Silver Fish Scale", | ||
gs = "Gold Fish Scale", | gs = "Gold Fish Scale", | ||
mb = "Membux", | |||
pl = "Prlz" | |||
} | } | ||
Line 37: | Line 47: | ||
-- If default is not specified then 'nil' is used and returned if not found. | -- If default is not specified then 'nil' is used and returned if not found. | ||
function p.getLinkFromAbbreviation(abbreviation, default) | function p.getLinkFromAbbreviation(abbreviation, default) | ||
local currencyTypes = { | local currencyTypes = { | ||
cash = "Cash", | cash = "Cash", | ||
Line 44: | Line 53: | ||
ge = "Golden Egg", | ge = "Golden Egg", | ||
sard = "Sardinium", | sard = "Sardinium Shadow", | ||
ac = "Ability chunk", | ac = "Ability chunk", | ||
Line 55: | Line 64: | ||
ss = "Fish scale", | ss = "Fish scale", | ||
gs = "Fish scale", | gs = "Fish scale", | ||
mb = "Membux", | |||
pl = "Prlz" | |||
} | } | ||
Line 60: | Line 72: | ||
end | end | ||
function p.getCost( | function p.getCost(game, quantity, currencyType, size, linkDisplay, widthStyle) | ||
game = string.upper(game) | |||
if currencyType == nil then currencyType = "cash" end | |||
if size == nil then size = 24 end | |||
if linkDisplay == nil then linkDisplay = "" end | |||
if widthStyle == nil then widthStyle = "" end | |||
local currencyIconName = nil | local currencyIconName = nil | ||
Line 87: | Line 98: | ||
-- Dirty hack, for ac, remove 'Generic' | -- Dirty hack, for ac, remove 'Generic' | ||
if currencyType == 'ac' then | if currencyType == 'ac' then currencyIconName = "Ability Chunk" end | ||
-- Append 's' for plural forms for the display name if quantity is not '1' | -- Append 's' for plural forms for the display name if quantity is not '1' | ||
Line 98: | Line 107: | ||
-- Construct the image link | -- Construct the image link | ||
local imageLink = string.format('[[File:%s|%s|%s|link=%s]]', fileName, fileSize, currencyIconName, fileLink) | local imageLink = string.format('[[File:%s|%s|%s|link=%s]]', fileName, | ||
fileSize, currencyIconName, fileLink) | |||
-- Constructing output with additional span for quantity if provided | -- Constructing output with additional span for quantity if provided | ||
if quantity and quantity ~= '' then | 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 | if widthStyle and widthStyle ~= '' then | ||
spanTag:cssText(widthStyle) | |||
end | end | ||
local quantityLink = linkDisplay == 'link' and string.format('[[%s|%s]]', fileLink, quantity) or quantity | local quantityLink = linkDisplay == 'link' and string.format('[[%s|%s]]', fileLink, quantity) or quantity | ||
spanTag:wikitext(' ' .. quantityLink) | spanTag:wikitext(' ' .. quantityLink) | ||
return imageLink .. tostring(spanTag) | |||
else | |||
return imageLink | |||
end | end | ||
end | end | ||
return p | return p |
Latest revision as of 07:52, 16 February 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 local game = args[1] or 'S' local quantity = args[2] local currencyType = args[3] or args['currency'] local size = tonumber(args[4]) local linkDisplay = args[5] or args[4] local widthStyle = args[6] and ("width:" .. args[6] .. "px;") return p.getCost(game, quantity, currencyType, size, linkDisplay, widthStyle) 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", mb = "Membux", pl = "Prlz" } 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", mb = "Membux", pl = "Prlz" } return currencyTypes[abbreviation] or default end function p.getCost(game, quantity, currencyType, size, linkDisplay, widthStyle) game = string.upper(game) if currencyType == nil then currencyType = "cash" end if size == nil then size = 24 end if linkDisplay == nil then linkDisplay = "" end if widthStyle == nil then widthStyle = "" end 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