Module:SpeciesLink: Difference between revisions
From Against the Storm Official Wiki
(Rewrote to be more lightweight, externalize the view, and to include frogs) |
(Allowing a display parameter for skipping the text part of the link) |
||
Line 59: | Line 59: | ||
local name = frame.args.species or frame.args[1] | local name = frame.args.species or frame.args[1] | ||
local iconSize = frame.args.iconsize or frame.args[2] | local iconSize = frame.args.iconsize or frame.args[2] | ||
local skipText = frame.args.display | |||
-- Check that something at all was provided for the name before we can validate it. | -- Check that something at all was provided for the name before we can validate it. | ||
Line 70: | Line 71: | ||
-- Defer to the view to handle the iconSize. We don't need to validate it. | -- Defer to the view to handle the iconSize. We don't need to validate it. | ||
-- The only valid term here is `notext`, which should be passed through; anything else we blank out. | |||
if skipText ~= "notext" then | |||
skipText = "" | |||
end | |||
local parameters = { | local parameters = { | ||
["name"] = speciesName, | ["name"] = speciesName, | ||
["iconfilename"] = iconFilename, | ["iconfilename"] = iconFilename, | ||
["size"] = iconSize, | ["size"] = iconSize, | ||
[1] = skipText, | |||
} | } | ||
Revision as of 03:50, 10 October 2024
Documentation for this module may be created at Module:SpeciesLink/doc
--- @module SpeciesLink local SpeciesLink = {} --region Dependencies local SpeciesData = require("Module:SpeciesData") local VIEW_TEMPLATE = "Species_link/view" --endregion --region Private constants local VALID_SIZES = { ["none"] = true, ["small"] = true, ["medium"] = true, ["large"] = true, ["huge"] = true, } --endregion --region Private methods local function validateSpeciesName(name) -- Try a quick match with the keys first. local speciesFound = SpeciesData.species[name] if speciesFound then return speciesFound else -- Look into the data to see if the name matches any of the names in the data. for _, species in pairs(SpeciesData.species) do if name == species[SpeciesData.NAME] then return species end end end error("You specified an invalid species name. Please see the template documentation for how to use the parameters.") end --endregion --region Public methods function SpeciesLink.main(frame) local name = frame.args.species or frame.args[1] local iconSize = frame.args.iconsize or frame.args[2] local skipText = frame.args.display -- Check that something at all was provided for the name before we can validate it. if not name or name == "" then error("You must specify the name of the species. Please see the template documentation for how to use the parameters.") end local validatedSpecies = validateSpeciesName(name) local speciesName = validatedSpecies[SpeciesData.NAME] local iconFilename = validatedSpecies[SpeciesData.ICON_FILENAME] .. ".png" -- Defer to the view to handle the iconSize. We don't need to validate it. -- The only valid term here is `notext`, which should be passed through; anything else we blank out. if skipText ~= "notext" then skipText = "" end local parameters = { ["name"] = speciesName, ["iconfilename"] = iconFilename, ["size"] = iconSize, [1] = skipText, } return frame:expandTemplate{ title = VIEW_TEMPLATE, args = parameters, } end --endregion return SpeciesLink