Module:SpriteFinder: Difference between revisions
From Against the Storm Official Wiki
Created to serve icons in perk and building descriptions |
Now also does grade stars |
||
| Line 20: | Line 20: | ||
local ICON_SIZE = mw.getCurrentFrame():expandTemplate{ title="ImgS" } | local ICON_SIZE = mw.getCurrentFrame():expandTemplate{ title="ImgS" } | ||
local TEMPLATE_GRADE_ICON = { | |||
["grade1"] = "1Star", | |||
["grade2"] = "2Star", | |||
["grade3"] = "3Star" | |||
} | |||
--endregion | --endregion | ||
| Line 41: | Line 47: | ||
function SpriteFinder.main(frame) | function SpriteFinder.main(frame) | ||
local | local id = frame.args[ARG_ID] | ||
if not | if not id or "" == id then | ||
return BLANK_RETURN | return BLANK_RETURN | ||
end | end | ||
-- Filter out the stars first. | |||
if TEMPLATE_GRADE_ICON[id] then | |||
return frame:expandTemplate{ title = TEMPLATE_GRADE_ICON[id] } | |||
-- The rest are IDs for goods. | |||
return BLANK_RETURN | else | ||
id = toTitleCase(id) | |||
local goodName = GoodsData.getGoodNameByID(id) | |||
if not goodName or "" == goodName then | |||
return BLANK_RETURN | |||
end | |||
local goodIcon = GoodsData.getGoodIconByID(id) | |||
if not goodIcon or "" == goodIcon then | |||
return BLANK_RETURN | |||
end | |||
return "[[File:" .. goodIcon .. "|" .. ICON_SIZE .. "|alt=" .. goodName .. "|link=" .. goodName .. "]]" | |||
end | end | ||
end | end | ||
Revision as of 23:39, 5 May 2024
Documentation for this module may be created at Module:SpriteFinder/doc
---
--- Replaces sprite XML tags in descriptions with small icons.
---
---@module SpriteFinder
SpriteFinder = {}
--region Dependencies
local GoodsData = require("Module:GoodsData")
--endregion
--region Private constants
local ARG_ID = "id"
local BLANK_RETURN = "?"
local ICON_SIZE = mw.getCurrentFrame():expandTemplate{ title="ImgS" }
local TEMPLATE_GRADE_ICON = {
["grade1"] = "1Star",
["grade2"] = "2Star",
["grade3"] = "3Star"
}
--endregion
--region Private methods
local function toTitleCase(lowercaseString)
return lowercaseString:gsub("(%a)([%w_']*)", function(first, rest)
return first:upper() .. rest:lower()
end)
end
--endregion
--region public methods
function SpriteFinder.main(frame)
local id = frame.args[ARG_ID]
if not id or "" == id then
return BLANK_RETURN
end
-- Filter out the stars first.
if TEMPLATE_GRADE_ICON[id] then
return frame:expandTemplate{ title = TEMPLATE_GRADE_ICON[id] }
-- The rest are IDs for goods.
else
id = toTitleCase(id)
local goodName = GoodsData.getGoodNameByID(id)
if not goodName or "" == goodName then
return BLANK_RETURN
end
local goodIcon = GoodsData.getGoodIconByID(id)
if not goodIcon or "" == goodIcon then
return BLANK_RETURN
end
return "[[File:" .. goodIcon .. "|" .. ICON_SIZE .. "|alt=" .. goodName .. "|link=" .. goodName .. "]]"
end
end
--endregion
return SpriteFinder


