Module:FindId

From Idlescape Wiki
Revision as of 04:47, 7 June 2024 by HASH (talk | contribs) (Now works with names containing "-", e.g. 'Notes on Acid - II)
Jump to navigation Jump to search

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("'", ""):gsub("%-%s"or"%-", ""):gsub("%s+", "_"):gsub("['%-]", "")
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