Module:PerkLink: Difference between revisions
From Against the Storm Official Wiki
created based on ResourceLink |
Updated to use the real PerksData |
||
| Line 1: | Line 1: | ||
local PerkLink = {} | |||
--region Dependencies | |||
-- | |||
local | local PerksData = require("Module:PerksData") | ||
local StyleUtils = require("Module:StyleUtils") | |||
--endregion | |||
-- | --region Private member variables | ||
local REPLACEMENT_FILENAME = "Question_mark.png" | local REPLACEMENT_FILENAME = "Question_mark.png" | ||
--endregion | |||
-- | |||
--region Private methods | |||
-- | local function resolveIconSize(iconSizeRequested) | ||
-- default for perk links is small | |||
local size = StyleUtils.IMG_S() | |||
if iconSizeRequested == "med" then | |||
size = StyleUtils.IMG_M() | |||
else | |||
if iconSizeRequested == "large" then | |||
size = StyleUtils.IMG_L() | |||
else | |||
if iconSizeRequested == "huge" then | |||
size = StyleUtils.IMG_H() | |||
end | |||
end | |||
end | end | ||
return size | |||
end | |||
if not | |||
return " | |||
local function makeIconPart(perkID, pageName, iconSize) | |||
if not iconSize or iconSize == "" or iconSize == "none" then | |||
return "" | |||
end | end | ||
local | |||
-- | local filename = PerksData.getIconByID(perkID) or REPLACEMENT_FILENAME | ||
if | local size = resolveIconSize(iconSize) | ||
return " | |||
return string.format("[[File:%s|%s|link=%s|alt=%s|%s]]", filename, size, pageName, pageName, pageName) | |||
end | |||
local function renderWithID(perkID, iconSize) | |||
local pageName = PerksData.getNameByID(perkID) | |||
local iconPart = makeIconPart(perkID, pageName, iconSize) | |||
local pagePart = "[[" .. pageName .. "]]" | |||
return iconPart .. " " .. pagePart | |||
end | |||
local function renderWithName(name, iconSize) | |||
local listOfIDs = PerksData.getAllPerkIDsByName(name) | |||
local perkID = listOfIDs[1] | |||
return renderWithID(perkID, iconSize) | |||
end | |||
--endregion | |||
--region Public methods | |||
--- Main rendering method invoked from the template. | |||
--- | |||
---@param frame table the MediaWiki calling context | |||
---@return string wiki markup with the results | |||
function PerkLink.renderLink(frame) | |||
-- Extract the template parameters. | |||
local perkID = frame.args.id or frame.args[1] | |||
local name = frame.args.name | |||
local iconSize = frame.args.iconsize | |||
if perkID and perkID ~= "" then | |||
return renderWithID(perkID, iconSize) | |||
else | |||
if name and name ~= "" then | |||
return renderWithName(name, iconSize) | |||
else | |||
return "The Perk_link template requires the ID or name of a perk." | |||
end | |||
end | end | ||
end | end | ||
--endregion | |||
return PerkLink | return PerkLink | ||
Revision as of 23:06, 28 March 2024
Documentation for this module may be created at Module:PerkLink/doc
local PerkLink = {}
--region Dependencies
local PerksData = require("Module:PerksData")
local StyleUtils = require("Module:StyleUtils")
--endregion
--region Private member variables
local REPLACEMENT_FILENAME = "Question_mark.png"
--endregion
--region Private methods
local function resolveIconSize(iconSizeRequested)
-- default for perk links is small
local size = StyleUtils.IMG_S()
if iconSizeRequested == "med" then
size = StyleUtils.IMG_M()
else
if iconSizeRequested == "large" then
size = StyleUtils.IMG_L()
else
if iconSizeRequested == "huge" then
size = StyleUtils.IMG_H()
end
end
end
return size
end
local function makeIconPart(perkID, pageName, iconSize)
if not iconSize or iconSize == "" or iconSize == "none" then
return ""
end
local filename = PerksData.getIconByID(perkID) or REPLACEMENT_FILENAME
local size = resolveIconSize(iconSize)
return string.format("[[File:%s|%s|link=%s|alt=%s|%s]]", filename, size, pageName, pageName, pageName)
end
local function renderWithID(perkID, iconSize)
local pageName = PerksData.getNameByID(perkID)
local iconPart = makeIconPart(perkID, pageName, iconSize)
local pagePart = "[[" .. pageName .. "]]"
return iconPart .. " " .. pagePart
end
local function renderWithName(name, iconSize)
local listOfIDs = PerksData.getAllPerkIDsByName(name)
local perkID = listOfIDs[1]
return renderWithID(perkID, iconSize)
end
--endregion
--region Public methods
--- Main rendering method invoked from the template.
---
---@param frame table the MediaWiki calling context
---@return string wiki markup with the results
function PerkLink.renderLink(frame)
-- Extract the template parameters.
local perkID = frame.args.id or frame.args[1]
local name = frame.args.name
local iconSize = frame.args.iconsize
if perkID and perkID ~= "" then
return renderWithID(perkID, iconSize)
else
if name and name ~= "" then
return renderWithName(name, iconSize)
else
return "The Perk_link template requires the ID or name of a perk."
end
end
end
--endregion
return PerkLink


