summaryrefslogtreecommitdiff
path: root/examples/tab_completion.py
diff options
context:
space:
mode:
Diffstat (limited to 'examples/tab_completion.py')
-rwxr-xr-xexamples/tab_completion.py50
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__':