diff Lib/multifile.py @ 31965:ef34dec004cd legacy-trunk

Stacks based on lists work better and read more clearly when they grow and shrink on the right.
author Raymond Hettinger <python@rcn.com>
date Tue, 04 May 2004 08:21:52 +0000
parents b529ac2f9ab6
children 907a45df1295 2f14518f300b
line wrap: on
line diff
--- a/Lib/multifile.py	Tue May 04 08:10:37 2004 +0000
+++ b/Lib/multifile.py	Tue May 04 08:21:52 2004 +0000
@@ -38,13 +38,13 @@
 
     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 @@
             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 @@
     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 @@
         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