Change get_previous_leaf to return None if there is no leaf anymore (at the start of the file).

This commit is contained in:
Dave Halter
2017-02-03 17:23:15 +01:00
parent 445bf6c419
commit c5071f9f49
3 changed files with 19 additions and 20 deletions
+5 -7
View File
@@ -212,16 +212,14 @@ class Parser(object):
if '\n' not in prefix:
# Basically if the last line doesn't end with a newline. we
# have to add the previous line's end_position.
try:
last_end = endmarker.get_previous_leaf().end_pos[1]
except IndexError:
pass
previous_leaf = endmarker.get_previous_leaf()
if previous_leaf is not None:
last_end = previous_leaf.end_pos[1]
last_line = re.sub('.*\n', '', prefix)
endmarker.start_pos = endmarker.line - 1, last_end + len(last_line)
else:
try:
newline = endmarker.get_previous_leaf()
except IndexError:
newline = endmarker.get_previous_leaf()
if newline is None:
return # This means that the parser is empty.
assert newline.value.endswith('\n')
+4 -4
View File
@@ -232,7 +232,7 @@ class Base(object):
if i == 0:
node = node.parent
if node.parent is None:
raise IndexError('Cannot access the previous element of the first one.')
return None
else:
node = c[i - 1]
break
@@ -286,10 +286,10 @@ class Leaf(Base):
self.indent = value[1]
def get_start_pos_of_prefix(self):
try:
return self.get_previous_leaf().end_pos
except IndexError:
previous_leaf = self.get_previous_leaf()
if previous_leaf is None:
return self.line - self.prefix.count('\n'), 0 # It's the first leaf.
return previous_leaf.end_pos
@property
def end_pos(self):