Module:PerksData: Difference between revisions

From MENACE Official Wiki
simple module for extracting perk attribute from Data/Perks.json
 
mNo edit summary
Line 20: Line 20:
--region Private methods
--region Private methods
local function loadData()
local function loadData()
if not perksData then
    if not perksData then
perksData = JsonUtils.convertJSONToLuaTable(DATA_FILE)
        perksData = JsonUtils.convertJSONToLuaTable(DATA_FILE)
end
    end
end
end




local function getTitleFromArgs(frame)
local function getTitleFromArgs(frame)
if frame.args then
    if frame.args then
         return frame.args[1] or frame.args.title
         return frame.args[1] or frame.args.title
else
    else
return frame
        return frame
end
    end
end
end



Revision as of 15:34, 9 October 2025

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.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 perk.Title == 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


return PerksData