mirror of https://github.com/python/cpython
Stacks based on lists work better and read more clearly when they
grow and shrink on the right.
This commit is contained in:
parent
2d5914b17e
commit
0b569bb399
|
@ -38,13 +38,13 @@ class MultiFile:
|
|||
|
||||
def __init__(self, fp, seekable=1):
|
||||
self.fp = fp
|
||||
self.stack = [] # Grows down
|
||||
self.stack = []
|
||||
self.level = 0
|
||||
self.last = 0
|
||||
if seekable:
|
||||
self.seekable = 1
|
||||
self.start = self.fp.tell()
|
||||
self.posstack = [] # Grows down
|
||||
self.posstack = []
|
||||
|
||||
def tell(self):
|
||||
if self.level > 0:
|
||||
|
@ -88,8 +88,7 @@ class MultiFile:
|
|||
marker = line.rstrip()
|
||||
# No? OK, try to match a boundary.
|
||||
# Return the line (unstripped) if we don't.
|
||||
for i in range(len(self.stack)):
|
||||
sep = self.stack[i]
|
||||
for i, sep in enumerate(reversed(self.stack)):
|
||||
if marker == self.section_divider(sep):
|
||||
self.last = 0
|
||||
break
|
||||
|
@ -130,9 +129,9 @@ class MultiFile:
|
|||
def push(self, sep):
|
||||
if self.level > 0:
|
||||
raise Error, 'bad MultiFile.push() call'
|
||||
self.stack.insert(0, sep)
|
||||
self.stack.append(sep)
|
||||
if self.seekable:
|
||||
self.posstack.insert(0, self.start)
|
||||
self.posstack.append(self.start)
|
||||
self.start = self.fp.tell()
|
||||
|
||||
def pop(self):
|
||||
|
@ -143,9 +142,9 @@ class MultiFile:
|
|||
else:
|
||||
abslastpos = self.lastpos + self.start
|
||||
self.level = max(0, self.level - 1)
|
||||
del self.stack[0]
|
||||
self.stack.pop()
|
||||
if self.seekable:
|
||||
self.start = self.posstack.pop(0)
|
||||
self.start = self.posstack.pop()
|
||||
if self.level > 0:
|
||||
self.lastpos = abslastpos - self.start
|
||||
|
||||
|
|
Loading…
Reference in New Issue