Module:Cost

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",

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",

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('', 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', fileLink, quantity) or quantity spanTag:wikitext(' ' .. quantityLink)

return imageLink .. tostring(spanTag) else return imageLink end end

return p