Module:OCIData: Difference between revisions

From MENACE Official Wiki
n tilted (talk | contribs)
No edit summary
n tilted (talk | contribs)
No edit summary
Line 15: Line 15:


--region Private member variables
--region Private member variables
local ociData
local ocisData
--endregion
--endregion


--region Private methods
--region Private methods
local function loadData()
local function loadData()
     if not ociData then
     if not ocisData then
         ociData = JsonUtils.convertJSONToLuaTable(DATA_FILE)
         ocisData = JsonUtils.convertJSONToLuaTable(DATA_FILE)
     end
     end
end
end

Revision as of 14:13, 20 July 2026

Documentation for this module may be created at Module:OCIData/doc

---
--- Extracts attributes of OCI from Module:Data/OCI-vX.X.X.json
---

---@module OCIData
local OCIData = {}

--region Dependencies
local JsonUtils = require("Module:JsonUtils")
--endregion

--region Private constants
local DATA_FILE = "Module:Data/OCI-v0.7.9.json"
--endregion

--region Private member variables
local ocisData
--endregion

--region Private methods
local function loadData()
    if not ocisData then
        ocisData = 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 ociTitle = getTitleFromArgs(frame)

    for _, oci in ipairs(ociData) do
        if string.lower(oci.Title) == string.lower(ociTitle) then
            return oci[property]
        end
    end
end
--endregion

--function OCIData.getShortNameByTitle(frame)
--    return getPropertyByTitle(frame, "Title")
--end

function OCIData.getIconByTitle(frame)
    return getPropertyByTitle(frame, "Icon")
end

function OCIData.getCategoryByTitle(frame)
    return getPropertyByTitle(frame, "Category")
end

function OCIData.getFactionyByTitle(frame)
    return getPropertyByTitle(frame, "Faction")
end

--function OCIData.getDescriptionByTitle(frame)
--    return getPropertyByTitle(frame, "Description")
--end

--function OCIData.getShortDescriptionByTitle(frame)
--    return getPropertyByTitle(frame, "ShortDescription")
--end

function OCIData.getPointCostByTitle(frame)
    return getPropertyByTitle(frame, "PointCost")
end

function OCIData.getStackableByTitle(frame)
    return getPropertyByTitle(frame, "Stackable")
end

function OCIData.getUpgradeToByTitle(frame)
    return getPropertyByTitle(frame, "UpgradeTo")
end

return OCIData