Module:OCIData: Difference between revisions

From MENACE Official Wiki
n tilted (talk | contribs)
No edit summary
n tilted (talk | contribs)
No edit summary
Line 40: Line 40:
     local ociTitle = getTitleFromArgs(frame)
     local ociTitle = getTitleFromArgs(frame)


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

Revision as of 14:16, 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(ocisData) 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