Module:PerksData

From MENACE Official Wiki
Revision as of 07:20, 5 July 2026 by n tilted (talk | contribs)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)

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