Difference between revisions of "Module:FindId"

From Idlescape Wiki
Jump to navigation Jump to search
(Fixed bugs)
m (replaced for loop with indexing)
Line 27: Line 27:
 
local function findId(hName, idType)
 
local function findId(hName, idType)
 
     local idList = p.loadData(idType)
 
     local idList = p.loadData(idType)
     for key, value in pairs(idList) do
+
     local id = idList[hName]
        if hName == key then
+
    if id then
            return value
+
        return id
        end
 
 
     end
 
     end
 
     return "id not found"
 
     return "id not found"

Revision as of 17:46, 1 June 2024


local p = {}

local idListNames = {
	ability = 'Module:Ability_ids/data',
    enchantment = 'Module:Enchantment_ids/data',
    item = 'Module:Item_ids/data',
    location = 'Module:location_ids/data',
    monster = 'Module:Monster_ids/data',
}

local loadedIdLists = {}

function p.loadData(listType)
	local listName = idListNames[listType]
	if loadedIdLists[listName] == nil then
		loadedIdLists[listName] = mw.loadData(listName)
	end

	return loadedIdLists[listName]
end

local function hyphenateName(name)
    local lName = name:lower()
    return lName:gsub('^%s*(.-)%s*$', '%1'):gsub("%s+", "_")
end

local function findId(hName, idType)
    local idList = p.loadData(idType)
    local id = idList[hName]
    if id then
        return id
    end
    return "id not found"
end

function p.findId(frame)
    local args = frame:getParent().args
	return p._item(args)
end

function p._findId(args)
    local hName = hyphenateName(args[1])
    local idType = args[2]
    local id

    id = findId(hName, idType)

    return id
end

return p