Mercurial > python-cmd2
diff cmd2.py @ 307:43273a4b517c
throw error from .span'
author | catherine@bothari |
---|---|
date | Thu, 28 Jan 2010 07:55:34 -0500 |
parents | 1802f8c75265 |
children | 4e9011c3f732 |
line wrap: on
line diff
--- a/cmd2.py Wed Jan 27 16:29:33 2010 -0500 +++ b/cmd2.py Thu Jan 28 07:55:34 2010 -0500 @@ -944,16 +944,16 @@ def do_list(self, arg): """list [arg]: lists last command issued - no arg -> list absolute last + no arg -> list most recent command arg is integer -> list one history item, by index - - arg, arg - (integer) -> list up to or after #arg + a..b, a:b, a:, ..b -> list spans from a (or start) to b (or end) arg is string -> list last command matching string search arg is /enclosed in forward-slashes/ -> regular expression search """ #TODO: totally failing to recognize args try: #self.stdout.write(self.last_matching(arg).pr()) - for hi in self.history.get(arg or -1): + for hi in self.history.span(arg or '-1'): self.poutput(hi.pr()) except: pass @@ -1108,7 +1108,7 @@ self.lowercase = self.lower() self.idx = None def pr(self): - return listformat % (self.idx, str(self)) + return self.listformat % (self.idx, str(self)) class History(list): '''A list of HistoryItems that knows how to respond to user requests. @@ -1128,6 +1128,8 @@ >>> h.span('-2..-3') ['third', 'second'] ''' + def find(self, target): + def zero_based_index(self, onebased): result = onebased if result > 0: @@ -1142,6 +1144,8 @@ spanpattern = re.compile(r'^\s*(?P<start>\-?\d+)?\s*(?P<separator>:|(\.{2,}))?\s*(?P<end>\-?\d+)?\s*$') def span(self, raw): results = self.spanpattern.search(raw) + if not results: + raise IndexError if not results.group('separator'): return [self[self.to_index(results.group('start'))]] start = self.to_index(results.group('start'))