You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
54 lines
1.4 KiB
54 lines
1.4 KiB
import argparse
|
|
from string import ascii_lowercase
|
|
|
|
import cmd2
|
|
|
|
from dictionary import DEFAULT, ALTERNATE
|
|
LOWERCASE = set(ascii_lowercase)
|
|
DICTS = {
|
|
'default': DEFAULT,
|
|
'alt': ALTERNATE,
|
|
}
|
|
# argparsers
|
|
dictionary_manage_parser = argparse.ArgumentParser()
|
|
commands = dictionary_manage_parser.add_mutually_exclusive_group()
|
|
commands.add_argument(
|
|
'-l', '--list', action='store_true', help='List available dictionaries')
|
|
commands.add_argument(
|
|
'-s', '--switch', help='Dictionary to swap to')
|
|
|
|
letter_set_manage = argparse.ArgumentParser()
|
|
letter_set_manage.add_argument('new_letters')
|
|
|
|
|
|
class MainLoop(cmd2.Cmd):
|
|
"""Loop for wordscape commands
|
|
|
|
"""
|
|
prompt = "?$ "
|
|
|
|
def __init__(self):
|
|
self.dict = 'default'
|
|
self.letters = [l for l in input(
|
|
"Enter letters: ").lower() if l in LOWERCASE]
|
|
self.prompt = ', '.join(self.letters) + ' ' + MainLoop.prompt
|
|
super().__init__()
|
|
|
|
@cmd2.with_argparser(dictionary_manage_parser)
|
|
def do_dict(self, args):
|
|
"""list/switch dict"""
|
|
if args.list:
|
|
print('\n'.join(
|
|
('{} {}'.format('*' if key == self.dict else ' ',
|
|
key) for key in DICTS.keys())))
|
|
else:
|
|
DICTS[args.switch]
|
|
self.dict = args.switch
|
|
|
|
@cmd2.with_argparser(letter_set_manage)
|
|
def do_change_letters(self, args):
|
|
pass
|
|
|
|
|
|
if __name__ == "__main__":
|
|
MainLoop().cmdloop()
|