Added command module.
This commit is contained in:
parent
1cf9f30362
commit
95b7899648
43
command.py
Normal file
43
command.py
Normal file
@ -0,0 +1,43 @@
|
||||
WHITESPACES = [' ', '\t', '\n']
|
||||
|
||||
class Command:
|
||||
command_prefix = '$'
|
||||
__callbacks = {}
|
||||
|
||||
@staticmethod
|
||||
def __getWords(string):
|
||||
words = []
|
||||
# Add whitespace to accept last word
|
||||
string += " "
|
||||
word = ""
|
||||
for c in string:
|
||||
if c in WHITESPACES and len(word) > 0:
|
||||
words.append(word)
|
||||
word = ""
|
||||
elif c not in WHITESPACES:
|
||||
word = word + c
|
||||
return words
|
||||
|
||||
@staticmethod
|
||||
def __getCommand(string):
|
||||
words = Command.__getWords(string);
|
||||
if words[0].startswith(Command.command_prefix):
|
||||
return words[0][1:]
|
||||
return ""
|
||||
|
||||
@staticmethod
|
||||
def __getArgs(string):
|
||||
words = Command.__getWords(string);
|
||||
return words[1:]
|
||||
|
||||
@staticmethod
|
||||
def registerCallback(command, callback):
|
||||
Command.__callbacks[command] = callback
|
||||
|
||||
@staticmethod
|
||||
def call(command):
|
||||
func = Command.__callbacks.get(Command.__getCommand(command), None)
|
||||
if func is not None:
|
||||
return func(*tuple(Command.__getArgs(command)))
|
||||
return None
|
||||
|
Loading…
Reference in New Issue
Block a user