Module:PerksData: Difference between revisions
From MENACE Official Wiki
simple module for extracting perk attribute from Data/Perks.json |
mNo edit summary |
||
| (7 intermediate revisions by 2 users not shown) | |||
| Line 11: | Line 11: | ||
--region Private constants | --region Private constants | ||
local DATA_FILE = "Module:Data/Perks.json" | local DATA_FILE = "Module:Data/Perks-v0.7.6.json" | ||
--endregion | --endregion | ||
| Line 20: | Line 20: | ||
--region Private methods | --region Private methods | ||
local function loadData() | local function loadData() | ||
if not perksData then | |||
perksData = JsonUtils.convertJSONToLuaTable(DATA_FILE) | |||
end | |||
end | end | ||
local function getTitleFromArgs(frame) | local function getTitleFromArgs(frame) | ||
if frame.args then | |||
return frame.args[1] or frame.args.title | return frame.args[1] or frame.args.title | ||
else | |||
return frame | |||
end | |||
end | end | ||
| Line 41: | Line 41: | ||
for _, perk in ipairs(perksData) do | for _, perk in ipairs(perksData) do | ||
if perk.Title == perkTitle then | if string.lower(perk.Title) == string.lower(perkTitle) then | ||
return perk[property] | return perk[property] | ||
end | end | ||
| Line 65: | Line 65: | ||
end | end | ||
function PerksData.getCharactersByTitle(frame) | |||
return getPropertyByTitle(frame, "Characters") | |||
end | |||
return PerksData | return PerksData | ||
Latest revision as of 07:20, 5 July 2026
Documentation for this module may be created at Module:PerksData/doc
---
--- Extracts attributes of perks from Module:Data/Perks.json
---
---@module PerksData
local PerksData = {}
--region Dependencies
local JsonUtils = require("Module:JsonUtils")
--endregion
--region Private constants
local DATA_FILE = "Module:Data/Perks-v0.7.6.json"
--endregion
--region Private member variables
local perksData
--endregion
--region Private methods
local function loadData()
if not perksData then
perksData = JsonUtils.convertJSONToLuaTable(DATA_FILE)
end
end
local function getTitleFromArgs(frame)
if frame.args then
return frame.args[1] or frame.args.title
else
return frame
end
end
local function getPropertyByTitle(frame, property)
loadData()
local perkTitle = getTitleFromArgs(frame)
for _, perk in ipairs(perksData) do
if string.lower(perk.Title) == string.lower(perkTitle) then
return perk[property]
end
end
end
--endregion
function PerksData.getIconByTitle(frame)
return getPropertyByTitle(frame, "Icon")
end
function PerksData.getShortDescriptionByTitle(frame)
return getPropertyByTitle(frame, "ShortDescription")
end
function PerksData.getLongDescriptionByTitle(frame)
return getPropertyByTitle(frame, "LongDescription")
end
function PerksData.getLoreByTitle(frame)
return getPropertyByTitle(frame, "Lore")
end
function PerksData.getCharactersByTitle(frame)
return getPropertyByTitle(frame, "Characters")
end
return PerksData


