Module:ServiceLink
From Against the Storm Official Wiki
Documentation for this module may be created at Module:ServiceLink/doc
--- ---@module ServiceLink local ServiceLink = {} --region Dependencies ---@type BaseDataModel local InstitutionsData = require("Module:InstitutionsData") local VIEW_TEMPLATE = "Service_link/view" --endregion --region Private constants local VALID_SIZE = { ["none"] = true, ["small"] = true, ["medium"] = true, ["large"] = true, ["huge"] = true, } --endregion --region Localization string constants local ERROR_MESSAGE_INVALID_NAME = "You must specify a service. Please see the template documentation for how to use the parameters" local ERROR_MESSAGE_INVALID_NAME = "The service you specified was not found. Please see the template documentation for how to use the parameters" --endregion --region Private methods local function validateServiceNameByIcon(name) --Currently services have the same ID and name. Hopefully this doesn't change. local list = InstitutionsData:getIDsAndRecipesWhereProductID(name) --If the list is empty, then the name is not valid. if #list < 1 then error(ERROR_MESSAGE_INVALID_NAME) end return "Icon_Need_" .. name .. ".png" end --endregion --region Public methods ---@public ---Extracts parameters, validates the service by getting its icon, and then sends the data to the view template for rendering. --- ---@param frame table the template's context, with arguments ---@return string wiki markup function ServiceLink.main(frame) local name = frame.args.name local iconSize = frame.args.size local displayOverride = frame.args.display if not name or name == "" then error(ERROR_MESSAGE_INVALID_NAME) end --Validate the name validatedIcon = validateServiceNameByIcon(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"] = displayOverride, } return frame:expandTemplate{ title = VIEW_TEMPLATE, args = viewParameters, } end --endregion return ServiceLink