aliasmgr.lua
local aliasmgr = {}
aliasmgr.__index = aliasmgr
function aliasmgr:new()
local mgr = {
aliases = {}
}
setmetatable(mgr, self)
return mgr
end
local function argError(funcName, argument, expected, actual)
local msg = string.format("%s: %s as %s expected, got %s", funcName, argument, expected, actual)
printError(msg, true, true)
end
function aliasmgr:register(name, regex, func)
local funcName = "aliasmgr:register(name, regex, func)"
if func == nil then
printError(f"{funcName} takes 3 arguments and you have provided less than that", true, true)
end
local nameType = type(name)
if nameType ~= "string" then
argError(funcName, "name", "string", nameType)
end
local regexType = type(regex)
if regexType ~= "string" then
argError(funcName, "regex", "string", regexType)
end
local funcType = type(func)
if funcType ~= "string" and funcType ~= "function" then
argError(funcName, "func", "string or function", funcType)
end
local object = {
regex = regex,
func = func
}
self:kill(name)
local ok, err = pcall(tempAlias, regex, func)
if not ok then
return nil, err
end
object.handlerID = err
self.aliases[name] = object
return true
end
function aliasmgr:add(name, regex, func)
self:register(name, regex, func)
end
function aliasmgr:disable(name)
local funcName = "aliasmgr:disable(name)"
local nameType = type(name)
if nameType ~= "string" then
argError(funcName, "name", "string", nameType)
end
local object = self.aliases[name]
if not object or object.handlerID == -1 then
return false
end
killAlias(object.handlerID)
object.handlerID = -1
return true
end
function aliasmgr:disableAll()
local aliases = self.aliases
for name, object in pairs(aliases) do
self:disable(name)
end
end
function aliasmgr:enable(name)
local funcName = "aliasmgr:enable(name)"
local nameType = type(name)
if nameType ~= "string" then
argError(funcName, "name", "string", nameType)
end
local object = self.aliases[name]
if not object then
return false
end
self:register(name, object.regex, object.func)
end
function aliasmgr:enableAll()
local aliases = self.aliases
for name,_ in pairs(aliases) do
self:enable(name)
end
return true
end
function aliasmgr:kill(name)
local funcName = "aliasmgr:kill(name)"
local nameType = type(name)
if nameType ~= "string" then
argError(funcName, "name", "string", nameType)
end
local object = self.aliases[name]
if not object then
return false
end
self:disable(name)
self.aliases[name] = nil
return true
end
function aliasmgr:killAll()
local aliases = self.aliases
for name, _ in pairs(aliases) do
self:kill(name)
end
end
function aliasmgr:delete(name)
return self:kill(name)
end
function aliasmgr:deleteAll()
return self:killAll()
end
function aliasmgr:getAliases()
return self.aliases
end
return aliasmgr