From: Constantin Berhard Date: Thu, 26 Sep 2013 09:55:42 +0000 (+0200) Subject: tyshell: convenience command shortcuts X-Git-Url: https://git.ralfj.de/saartuer.git/commitdiff_plain/bf408ef82859e90b60f30fd8edf6503c7e88394f?ds=inline tyshell: convenience command shortcuts --- diff --git a/tyshell b/tyshell index 9350e12..0b9b943 100755 --- a/tyshell +++ b/tyshell @@ -20,7 +20,7 @@ atexit.register(print, "Bye") # available commands def helpcmd(c): - print("Available commands: %s" % ", ".join(sorted(commands.keys()))) + print("Available commands: %s" % ", ".join(sorted(longcommands.keys()))) def extcmd(cmd): def run(c): @@ -53,6 +53,39 @@ commands = { 'buzz': sendcmd(tuerSock, 'buzz'), } +# command convenience shortcuts +def filterCommonPrefix (strings, length): + # ignores duplicates in the string list "strings" + toremove=[] + for a in strings: + for b in strings: + if a != b: + if a[:length] == b[:length]: + toremove.append(a) + toremove.append(b) + ret = list(strings) # copy + for x in toremove: + try: + ret.remove(x) + except ValueError: + pass + return ret + +def shortcutify (dic): + maxlen = 0 + for x in dic.keys(): + if len(x) > maxlen: + maxlen = len(x) + for i in range(maxlen): + shortable = filterCommonPrefix (dic.keys(), i) + for x in shortable: + dic[x[:i]] = dic[x] + return dic # only for convenience, as dic is passed by reference + +longcommands = commands.copy() +shortcutify (commands) + + # input loop print("Welcome to tyshell. Use help to see what you can do.") while True: