Module:SpeciesLink: Difference between revisions
From Against the Storm Official Wiki
is no longer case sensitive |
changing template parameter name to display |
||
| Line 60: | Line 60: | ||
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 | local displayOverride = 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 74: | Line 74: | ||
-- The only valid term here is `notext`, which should be passed through; anything else we blank out. | -- The only valid term here is `notext`, which should be passed through; anything else we blank out. | ||
if | if displayOverride ~= "notext" then | ||
displayOverride = "" | |||
end | end | ||
| Line 82: | Line 82: | ||
["iconfilename"] = iconFilename, | ["iconfilename"] = iconFilename, | ||
["size"] = iconSize, | ["size"] = iconSize, | ||
[ | ["display"] = displayOverride, | ||
} | } | ||
Revision as of 21:25, 11 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, whether key or name, and be flexible with capitalization.
for key, species in pairs(SpeciesData.species) do
if string.lower(name) == string.lower(species[SpeciesData.NAME]) or
string.lower(name) == string.lower(key) 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 displayOverride = 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 displayOverride ~= "notext" then
displayOverride = ""
end
local parameters = {
["name"] = speciesName,
["iconfilename"] = iconFilename,
["size"] = iconSize,
["display"] = displayOverride,
}
return frame:expandTemplate{
title = VIEW_TEMPLATE,
args = parameters,
}
end
--endregion
return SpeciesLink


