Module:PerksData: Difference between revisions

From MENACE Official Wiki
mNo edit summary
n tilted (talk | contribs)
mNo edit summary
 
(6 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 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