Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit 0b569bb

Browse files
committed
Stacks based on lists work better and read more clearly when they
grow and shrink on the right.
1 parent 2d5914b commit 0b569bb

1 file changed

Lines changed: 7 additions & 8 deletions

File tree

Lib/multifile.py

Lines changed: 7 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -38,13 +38,13 @@ class MultiFile:
3838

3939
def __init__(self, fp, seekable=1):
4040
self.fp = fp
41-
self.stack = [] # Grows down
41+
self.stack = []
4242
self.level = 0
4343
self.last = 0
4444
if seekable:
4545
self.seekable = 1
4646
self.start = self.fp.tell()
47-
self.posstack = [] # Grows down
47+
self.posstack = []
4848

4949
def tell(self):
5050
if self.level > 0:
@@ -88,8 +88,7 @@ def readline(self):
8888
marker = line.rstrip()
8989
# No? OK, try to match a boundary.
9090
# Return the line (unstripped) if we don't.
91-
for i in range(len(self.stack)):
92-
sep = self.stack[i]
91+
for i, sep in enumerate(reversed(self.stack)):
9392
if marker == self.section_divider(sep):
9493
self.last = 0
9594
break
@@ -130,9 +129,9 @@ def next(self):
130129
def push(self, sep):
131130
if self.level > 0:
132131
raise Error, 'bad MultiFile.push() call'
133-
self.stack.insert(0, sep)
132+
self.stack.append(sep)
134133
if self.seekable:
135-
self.posstack.insert(0, self.start)
134+
self.posstack.append(self.start)
136135
self.start = self.fp.tell()
137136

138137
def pop(self):
@@ -143,9 +142,9 @@ def pop(self):
143142
else:
144143
abslastpos = self.lastpos + self.start
145144
self.level = max(0, self.level - 1)
146-
del self.stack[0]
145+
self.stack.pop()
147146
if self.seekable:
148-
self.start = self.posstack.pop(0)
147+
self.start = self.posstack.pop()
149148
if self.level > 0:
150149
self.lastpos = abslastpos - self.start
151150

0 commit comments

Comments
 (0)