Module:ResourceLink: Difference between revisions
From Against the Storm Official Wiki
m (fixing duplicate icon extension) |
(now with error checking!) |
||
(5 intermediate revisions by the same user not shown) | |||
Line 1: | Line 1: | ||
- | --- @module ResourceLink | ||
-- @module ResourceLink | |||
local ResourceLink = {} | local ResourceLink = {} | ||
-- Dependencies | --region Dependencies | ||
local GoodsData = require("Module:GoodsData") | local GoodsData = require("Module:GoodsData") | ||
local VIEW_TEMPLATE = "Resource_link/view" | |||
--endregion | |||
--region Private constants | |||
local VALID_SIZE = { | |||
["none"] = true, | |||
["small"] = true, | |||
["medium"] = true, | |||
["large"] = true, | |||
["huge"] = true, | |||
} | |||
--endregion | |||
--region Private methods | |||
---validateResourceName retrieves the icon from the data module. | |||
--- | --- | ||
-- | ---@param name string the display name of a resource | ||
-- | ---@return string the filename of the icon | ||
- | local function validateResourceName(name) | ||
local | |||
local goodID = GoodsData.getGoodID(name) | |||
local | local validatedIcon = GoodsData.getIcon(goodID) | ||
local | |||
if not validatedIcon then | |||
error("No resource found with name: " .. name .. ". Please see the template documentation for how to use the parameters") | |||
end | |||
return validatedIcon | |||
end | |||
--endregion | |||
--region Public methods | |||
---main is called from the template to create a link, with an icon, to the page for the specified goods. | |||
--- | --- | ||
- | ---@param frame table the Mediawiki template context | ||
---@return string wikimarkup generated by the view template | |||
function ResourceLink.main(frame) | |||
local name = frame.args.name | |||
local iconSize = frame.args.size | |||
local display = frame.args.display | |||
-- @param frame the template | if not name or name == "" then | ||
-- @return | error("You must specify a resource. Please see the template documentation for how to use the parameters") | ||
function ResourceLink. | |||
local | |||
local | |||
if not | |||
end | end | ||
-- | -- Validate the name. | ||
validatedIcon = validateResourceName(name) | |||
if not | -- Handle default icon size. | ||
if not iconSize or iconSize == "" or not VALID_SIZE[iconSize] then | |||
iconSize = "small" | |||
end | end | ||
-- The args to pass to the view. | |||
viewParameters = { | |||
["name"] = name, | |||
-- | ["iconfilename"] = validatedIcon, | ||
["iconsize"] = iconSize, | |||
["display"] = display, | |||
} | |||
return frame:expandTemplate{ | |||
title = VIEW_TEMPLATE, | |||
args = viewParameters, | |||
} | |||
end | end | ||
--endregion | |||
return ResourceLink | return ResourceLink |
Latest revision as of 02:44, 19 October 2024
Documentation for this module may be created at Module:ResourceLink/doc
--- @module ResourceLink local ResourceLink = {} --region Dependencies local GoodsData = require("Module:GoodsData") local VIEW_TEMPLATE = "Resource_link/view" --endregion --region Private constants local VALID_SIZE = { ["none"] = true, ["small"] = true, ["medium"] = true, ["large"] = true, ["huge"] = true, } --endregion --region Private methods ---validateResourceName retrieves the icon from the data module. --- ---@param name string the display name of a resource ---@return string the filename of the icon local function validateResourceName(name) local goodID = GoodsData.getGoodID(name) local validatedIcon = GoodsData.getIcon(goodID) if not validatedIcon then error("No resource found with name: " .. name .. ". Please see the template documentation for how to use the parameters") end return validatedIcon end --endregion --region Public methods ---main is called from the template to create a link, with an icon, to the page for the specified goods. --- ---@param frame table the Mediawiki template context ---@return string wikimarkup generated by the view template function ResourceLink.main(frame) local name = frame.args.name local iconSize = frame.args.size local display = frame.args.display if not name or name == "" then error("You must specify a resource. Please see the template documentation for how to use the parameters") end -- Validate the name. validatedIcon = validateResourceName(name) -- Handle default icon size. if not iconSize or iconSize == "" or not VALID_SIZE[iconSize] then iconSize = "small" end -- The args to pass to the view. viewParameters = { ["name"] = name, ["iconfilename"] = validatedIcon, ["iconsize"] = iconSize, ["display"] = display, } return frame:expandTemplate{ title = VIEW_TEMPLATE, args = viewParameters, } end --endregion return ResourceLink