summaryrefslogtreecommitdiff
path: root/Lib/lib2to3/pytree.py
diff options
context:
space:
mode:
authorMartin v. Löwis <martin@v.loewis.de>2008-04-10 02:48:01 +0000
committerMartin v. Löwis <martin@v.loewis.de>2008-04-10 02:48:01 +0000
commit60a819d681d1004a9703b050501b70912f40b1ed (patch)
treec7f8b66797ba0df84f074c71e437d574137dc775 /Lib/lib2to3/pytree.py
parentc00eb73a309d5e9a4e89c3114b32eda88bd83e98 (diff)
downloadcpython-git-60a819d681d1004a9703b050501b70912f40b1ed.tar.gz
Merged revisions 62080-62262 via svnmerge from
svn+ssh://pythondev@svn.python.org/sandbox/trunk/2to3/lib2to3 ........ r62092 | collin.winter | 2008-04-01 18:27:10 +0200 (Di, 01 Apr 2008) | 1 line Add get_prev_sibling() to complement pytree's get_next_sibling(). ........ r62226 | collin.winter | 2008-04-08 21:07:56 +0200 (Di, 08 Apr 2008) | 1 line Add min() and max() to the list of special contexts that don't require adding list() calls around dict methods. ........ r62232 | collin.winter | 2008-04-09 00:12:38 +0200 (Mi, 09 Apr 2008) | 4 lines Fix for http://bugs.python.org/issue2596 This extends fix_xrange to know about the (mostly) same special contexts as fix_dict (where a special context is something that is guaranteed to fully consume the iterable), adding list() calls where appropriate. It also special-cases "x in range(y)". ........
Diffstat (limited to 'Lib/lib2to3/pytree.py')
-rw-r--r--Lib/lib2to3/pytree.py18
1 files changed, 16 insertions, 2 deletions
diff --git a/Lib/lib2to3/pytree.py b/Lib/lib2to3/pytree.py
index 8b6780afdb..18a2de34f2 100644
--- a/Lib/lib2to3/pytree.py
+++ b/Lib/lib2to3/pytree.py
@@ -167,13 +167,27 @@ class Base(object):
return None
# Can't use index(); we need to test by identity
- for i, sibling in enumerate(self.parent.children):
- if sibling is self:
+ for i, child in enumerate(self.parent.children):
+ if child is self:
try:
return self.parent.children[i+1]
except IndexError:
return None
+ def get_prev_sibling(self):
+ """Return the node immediately preceding the invocant in their
+ parent's children list. If the invocant does not have a previous
+ sibling, return None."""
+ if self.parent is None:
+ return None
+
+ # Can't use index(); we need to test by identity
+ for i, child in enumerate(self.parent.children):
+ if child is self:
+ if i == 0:
+ return None
+ return self.parent.children[i-1]
+
def get_suffix(self):
"""Return the string immediately following the invocant node. This
is effectively equivalent to node.get_next_sibling().get_prefix()"""