diff options
author | Todd Leonhardt <todd.leonhardt@gmail.com> | 2017-06-03 10:59:06 -0400 |
---|---|---|
committer | Todd Leonhardt <todd.leonhardt@gmail.com> | 2017-06-03 10:59:06 -0400 |
commit | ad3d32339f791faa31763fe3efb42d0be469ddef (patch) | |
tree | 8bedc45871f10cfb1973aadd15abab9d2562c902 /cmd2.py | |
parent | a0d829e4105cd431198feb43534adaf953b090ba (diff) | |
download | cmd2-git-ad3d32339f791faa31763fe3efb42d0be469ddef.tar.gz |
Removed redundant list command
The extra functionality of listing a span (slice) of history items present in the list command has been incorporated into the existing history command and the list command has been removed.
Unit tests have been updated accordingly.
In the process a bug was fixed that was causing a crash if and end was supplied to the span but not a start.
Diffstat (limited to 'cmd2.py')
-rwxr-xr-x | cmd2.py | 49 |
1 files changed, 14 insertions, 35 deletions
@@ -1592,7 +1592,8 @@ class Cmd(cmd.Cmd): | no arg: list all | arg is integer: list one history item, by index - | arg is string: string search + | a..b, a:b, a:, ..b -> list history items by a span of indices (inclusive) + | arg is string: list all commands matching string search | arg is /enclosed in forward-slashes/: regular expression search """ # If arguments are being passed as a list instead of as a string @@ -1602,10 +1603,20 @@ class Cmd(cmd.Cmd): else: arg = '' + # If an argument was supplied, then retrieve partial contents of the history if arg: - history = self.history.get(arg) + # If a character indicating a slice is present, retrieve a slice of the history + if '..' in arg or ':' in arg: + # Get a slice of history + history = self.history.span(arg) + else: + # Get item(s) from history by index or string search + history = self.history.get(arg) else: + # If no arg given, then retrieve the entire history history = self.history + + # Display the history items retrieved for hi in history: if opts.script: self.poutput(hi) @@ -1628,38 +1639,6 @@ class Cmd(cmd.Cmd): except IndexError: return None - def do_list(self, arg): - """list [arg]: lists command(s) from history in a flexible/searchable way. - - :param arg: str - behavior varies as follows: - - * no arg -> list most recent command - * arg is integer -> list one history item, by index - * a..b, a:b, a:, ..b -> list spans from a (or start) to b (or end) - * arg is string -> list all commands matching string search - * arg is /enclosed in forward-slashes/ -> regular expression search - """ - try: - history = self.history.span(arg or '-1') - except IndexError: - history = self.history.search(arg) - for hi in history: - self.poutput(hi.pr()) - - def help_list(self): - """Print help for do_list().""" - help_str = """Lists command(s) from history in a flexible/searchable way. - - Usage: list [arg] - - Where arg is: - no arg -> list most recent command - arg is integer -> list one history item, by index - a..b, a:b, a:, ..b -> list spans from a (or start) to b (or end) - arg is string -> list all commands matching string search - arg is /enclosed in forward-slashes/ -> regular expression search""" - self.stdout.write("{}\n".format(help_str)) - def do_edit(self, arg): """Edit a file or command in a text editor. @@ -2170,7 +2149,7 @@ class History(list): raise IndexError if not results.group('separator'): return [self[self._to_index(results.group('start'))]] - start = self._to_index(results.group('start')) + start = self._to_index(results.group('start')) or 0 # Ensure start is not None end = self._to_index(results.group('end')) reverse = False if end is not None: |