Show More
@@ -149,7 +149,7 b' class _BrowserLevel(object):' | |||||
149 | # position of cursor and screen, etc.) of one browser level |
|
149 | # position of cursor and screen, etc.) of one browser level | |
150 | # An ``ibrowse`` object keeps multiple ``_BrowserLevel`` objects in |
|
150 | # An ``ibrowse`` object keeps multiple ``_BrowserLevel`` objects in | |
151 | # a stack. |
|
151 | # a stack. | |
152 | def __init__(self, browser, input,mainsizey, *attrs): |
|
152 | def __init__(self, browser, input, mainsizey, *attrs): | |
153 | self.browser = browser |
|
153 | self.browser = browser | |
154 | self.input = input |
|
154 | self.input = input | |
155 | self.header = [x for x in ipipe.xrepr(input, "header") if not isinstance(x[0], int)] |
|
155 | self.header = [x for x in ipipe.xrepr(input, "header") if not isinstance(x[0], int)] | |
@@ -925,23 +925,27 b' class ibrowse(ipipe.Display):' | |||||
925 | Enter the object ``item``. If ``attrs`` is specified, it will be used |
|
925 | Enter the object ``item``. If ``attrs`` is specified, it will be used | |
926 | as a fixed list of attributes to display. |
|
926 | as a fixed list of attributes to display. | |
927 | """ |
|
927 | """ | |
928 | oldlevels = len(self.levels) |
|
928 | if self.levels and item is self.levels[-1].input: | |
929 | self._calcheaderlines(oldlevels+1) |
|
|||
930 | try: |
|
|||
931 | level = _BrowserLevel( |
|
|||
932 | self, |
|
|||
933 | item, |
|
|||
934 | self.scrsizey-1-self._headerlines-2, |
|
|||
935 | *attrs |
|
|||
936 | ) |
|
|||
937 | except (KeyboardInterrupt, SystemExit): |
|
|||
938 | raise |
|
|||
939 | except Exception, exc: |
|
|||
940 | self._calcheaderlines(oldlevels) |
|
|||
941 | curses.beep() |
|
929 | curses.beep() | |
942 | self.report(exc) |
|
930 | self.report(CommandError("Recursion on input object")) | |
943 | else: |
|
931 | else: | |
944 |
self.levels |
|
932 | oldlevels = len(self.levels) | |
|
933 | self._calcheaderlines(oldlevels+1) | |||
|
934 | try: | |||
|
935 | level = _BrowserLevel( | |||
|
936 | self, | |||
|
937 | item, | |||
|
938 | self.scrsizey-1-self._headerlines-2, | |||
|
939 | *attrs | |||
|
940 | ) | |||
|
941 | except (KeyboardInterrupt, SystemExit): | |||
|
942 | raise | |||
|
943 | except Exception, exc: | |||
|
944 | self._calcheaderlines(oldlevels) | |||
|
945 | curses.beep() | |||
|
946 | self.report(exc) | |||
|
947 | else: | |||
|
948 | self.levels.append(level) | |||
945 |
|
949 | |||
946 | def startkeyboardinput(self, mode): |
|
950 | def startkeyboardinput(self, mode): | |
947 | """ |
|
951 | """ |
@@ -943,7 +943,13 b' def xiter(item):' | |||||
943 | elif _isstr(item): |
|
943 | elif _isstr(item): | |
944 | if not item: |
|
944 | if not item: | |
945 | raise ValueError("can't enter empty string") |
|
945 | raise ValueError("can't enter empty string") | |
946 |
|
|
946 | lines = item.splitlines() | |
|
947 | if len(lines) == 1: | |||
|
948 | def iterone(item): | |||
|
949 | yield item | |||
|
950 | return iterone(item) | |||
|
951 | else: | |||
|
952 | return iter(lines) | |||
947 | return iter(item) |
|
953 | return iter(item) | |
948 | else: |
|
954 | else: | |
949 | return iter(func()) # iter() just to be safe |
|
955 | return iter(func()) # iter() just to be safe |
@@ -1,3 +1,13 b'' | |||||
|
1 | 2007-01-23 Walter Doerwald <walter@livinglogic.de> | |||
|
2 | ||||
|
3 | * IPython/Extensions/ipipe.py (xiter): Make sure that iterating | |||
|
4 | a string containing a single line yields the string itself as the | |||
|
5 | only item. | |||
|
6 | ||||
|
7 | * IPython/Extensions/ibrowse.py (ibrowse): Avoid entering an | |||
|
8 | object if it's the same as the one on the last level (This avoids | |||
|
9 | infinite recursion for one line strings). | |||
|
10 | ||||
1 | 2007-01-17 Fernando Perez <Fernando.Perez@colorado.edu> |
|
11 | 2007-01-17 Fernando Perez <Fernando.Perez@colorado.edu> | |
2 |
|
12 | |||
3 | * IPython/ultraTB.py (AutoFormattedTB.__call__): properly flush |
|
13 | * IPython/ultraTB.py (AutoFormattedTB.__call__): properly flush |
General Comments 0
You need to be logged in to leave comments.
Login now