Module:ResourceLink: Difference between revisions
From Against the Storm Official Wiki
(Streamlined and updated to use new GoodsData. Also streamlined the documentation, to be less duplicative with the template doc but still helpful. Also created a method modules can call directly with an ID) |
(now with error checking!) |
||
(4 intermediate revisions by the same user not shown) | |||
Line 1: | Line 1: | ||
--- @module ResourceLink | --- @module ResourceLink | ||
local ResourceLink = {} | local ResourceLink = {} | ||
--region Dependencies | |||
local GoodsData = require("Module:GoodsData") | local GoodsData = require("Module:GoodsData") | ||
local VIEW_TEMPLATE = "Resource_link/view" | |||
--endregion | |||
Line 25: | Line 15: | ||
--region Private constants | --region Private constants | ||
local | local VALID_SIZE = { | ||
["none"] = true, | |||
["small"] = true, | |||
["medium"] = true, | |||
["small"] = | ["large"] = true, | ||
[" | ["huge"] = true, | ||
["large"] = | |||
["huge"] = | |||
} | } | ||
--endregion | --endregion | ||
Line 43: | Line 29: | ||
--region Private methods | --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) | |||
---@param | |||
---@ | |||
local function | |||
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 | end | ||
return | return validatedIcon | ||
end | end | ||
Line 79: | Line 51: | ||
--region Public methods | --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) | |||
---@param | |||
---@return string | |||
function ResourceLink. | |||
local | local name = frame.args.name | ||
local iconSize = frame.args.size | |||
local display = frame.args.display | |||
if not | if not name or name == "" then | ||
error("You must specify a resource. Please see the template documentation for how to use the parameters") | |||
end | end | ||
-- Validate the name. | |||
validatedIcon = validateResourceName(name) | |||
-- Handle default icon size. | |||
if not iconSize or iconSize == "" or not VALID_SIZE[iconSize] then | |||
iconSize = "small" | |||
if not | |||
end | end | ||
-- The args to pass to the view. | |||
viewParameters = { | |||
["name"] = name, | |||
["iconfilename"] = validatedIcon, | |||
["iconsize"] = iconSize, | |||
["display"] = display, | |||
} | |||
return | return frame:expandTemplate{ | ||
title = VIEW_TEMPLATE, | |||
args = viewParameters, | |||
} | |||
end | end | ||
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