local chat = {
commands = {}
}
function chat.newCommand(commandName, commandFunction)
chat.commands[commandName] = {
name = commandName,
commandFunction = commandFunction,
subCommands = {}
}
local lastSpace
local spacePos
repeat
lastSpace = spacePos
spacePos = commandName:find("%s", (lastSpace or -1) + 1)
until not spacePos
if lastSpace then
chat.commands[commandName].superCommand = chat.commands[commandName:sub(1, lastSpace - 1)]
table.insert(chat.commands[commandName].superCommand.subCommands, chat.commands[commandName])
end
end
local function printCommands(commands, position, dontPrintChilds)
position = position or 0
for k,command in pairs(commands) do
if not (command.superCommand and dontPrintChilds) then
print(string.rep(" ", position) .. command.name)
end
printCommands(command.subCommands, position + 2)
end
end
local function help()
printCommands(chat.commands, 0, true)
end
chat.newCommand("test")
chat.newCommand("test blub")
chat.newCommand("aha")
chat.newCommand("aha tada")
chat.newCommand("aha nein")
chat.newCommand("aha nein blub")
help()