diff options
Diffstat (limited to 'examples/tab_completion.py')
-rwxr-xr-x | examples/tab_completion.py | 50 |
1 files changed, 27 insertions, 23 deletions
diff --git a/examples/tab_completion.py b/examples/tab_completion.py index 6c16e63b..93d6c0ef 100755 --- a/examples/tab_completion.py +++ b/examples/tab_completion.py @@ -3,34 +3,14 @@ """A simple example demonstrating how to use flag and index based tab-completion functions """ import argparse -import functools import cmd2 -from cmd2 import with_argparser, with_argument_list, flag_based_complete, index_based_complete, path_complete +from cmd2 import with_argparser, with_argument_list # List of strings used with flag and index based completion functions food_item_strs = ['Pizza', 'Hamburger', 'Ham', 'Potato'] sport_item_strs = ['Bat', 'Basket', 'Basketball', 'Football'] -# Dictionary used with flag based completion functions -flag_dict = \ - { - '-f': food_item_strs, # Tab-complete food items after -f flag in command line - '--food': food_item_strs, # Tab-complete food items after --food flag in command line - '-s': sport_item_strs, # Tab-complete sport items after -s flag in command line - '--sport': sport_item_strs, # Tab-complete sport items after --sport flag in command line - '-o': path_complete, # Tab-complete using path_complete function after -o flag in command line - '--other': path_complete, # Tab-complete using path_complete function after --other flag in command line - } - -# Dictionary used with index based completion functions -index_dict = \ - { - 1: food_item_strs, # Tab-complete food items at index 1 in command line - 2: sport_item_strs, # Tab-complete sport items at index 2 in command line - 3: path_complete, # Tab-complete using path_complete function at index 3 in command line - } - class TabCompleteExample(cmd2.Cmd): """ Example cmd2 application where we a base command which has a couple subcommands.""" @@ -59,7 +39,23 @@ class TabCompleteExample(cmd2.Cmd): self.poutput("You added {}".format(add_item)) # Add flag-based tab-completion to add_item command - complete_add_item = functools.partial(flag_based_complete, flag_dict=flag_dict) + def complete_add_item(self, text, line, begidx, endidx): + flag_dict = \ + { + # Tab-complete food items after -f and --food flags in command line + '-f': food_item_strs, + '--food': food_item_strs, + + # Tab-complete sport items after -s and --sport flags in command line + '-s': sport_item_strs, + '--sport': sport_item_strs, + + # Tab-complete using path_complete function after -o and --other flags in command line + '-o': self.path_complete, + '--other': self.path_complete, + } + + return self.flag_based_complete(text, line, begidx, endidx, flag_dict=flag_dict) @with_argument_list def do_list_item(self, args): @@ -67,7 +63,15 @@ class TabCompleteExample(cmd2.Cmd): self.poutput("You listed {}".format(args)) # Add index-based tab-completion to list_item command - complete_list_item = functools.partial(index_based_complete, index_dict=index_dict) + def complete_list_item(self, text, line, begidx, endidx): + index_dict = \ + { + 1: food_item_strs, # Tab-complete food items at index 1 in command line + 2: sport_item_strs, # Tab-complete sport items at index 2 in command line + 3: self.path_complete, # Tab-complete using path_complete function at index 3 in command line + } + + return self.index_based_complete(text, line, begidx, endidx, index_dict=index_dict) if __name__ == '__main__': |