summaryrefslogtreecommitdiff
path: root/examples
diff options
context:
space:
mode:
authorKevin Van Brunt <kmvanbrunt@gmail.com>2018-03-24 18:15:27 -0400
committerKevin Van Brunt <kmvanbrunt@gmail.com>2018-03-24 18:15:27 -0400
commitefd3b2cbe243dc520dab4146fae014c19447af53 (patch)
tree104b14c63e8ac352b30e62232bd83bf45b219f92 /examples
parent40f8a84dc0177097c8c0f97e91a8b514d1540c0f (diff)
downloadcmd2-git-efd3b2cbe243dc520dab4146fae014c19447af53.tar.gz
Made subcommand specific completion work with Python 2 in the examples
Diffstat (limited to 'examples')
-rwxr-xr-xexamples/subcommands.py10
-rwxr-xr-xexamples/tab_completion.py50
2 files changed, 31 insertions, 29 deletions
diff --git a/examples/subcommands.py b/examples/subcommands.py
index bc82b548..0cc529a7 100755
--- a/examples/subcommands.py
+++ b/examples/subcommands.py
@@ -11,7 +11,7 @@ import functools
import sys
import cmd2
-from cmd2 import with_argparser, index_based_complete
+from cmd2 import with_argparser
class SubcommandsExample(cmd2.Cmd):
@@ -38,7 +38,7 @@ class SubcommandsExample(cmd2.Cmd):
""" Adds tab completion to base sport subcommand """
sports = ['Football', 'Hockey', 'Soccer', 'Baseball']
index_dict = {1: sports}
- return index_based_complete(text, line, begidx, endidx, index_dict)
+ return self.index_based_complete(text, line, begidx, endidx, index_dict)
# create the top-level parser for the base command
base_parser = argparse.ArgumentParser(prog='base')
@@ -71,10 +71,8 @@ class SubcommandsExample(cmd2.Cmd):
# No subcommand was provided, so call help
self.do_help('base')
- # functools.partialmethod was added in Python 3.4
- if sys.version_info >= (3, 4):
- # This makes sure correct tab completion functions are called based on the selected subcommand
- complete_base = functools.partialmethod(cmd2.Cmd.cmd_with_subs_completer, base='base')
+ def complete_base(self, text, line, begidx, endidx):
+ return self.cmd_with_subs_completer(text, line, begidx, endidx, base='base')
if __name__ == '__main__':
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__':