- while True:
- if len(self.nstack) == 0:
- raise StopIteration
- try:
- node = self.lstack[-1][self.nstack[-1]]
- except IndexError:
- self.lstack.pop()
- self.nstack.pop()
- if len(self.nstack) > 0:
- self.nstack[-1] += 1
- continue
- if isinstance(node, page):
- nl = tuple(self.nstack)
- self.nstack[-1] += 1
- return nl, node
- elif isinstance(node, pagelist):
- self.lstack.append(node)
- self.nstack.append(0)
+ for n, i in reversed(self.cur.stack):
+ if i < len(n) - 1:
+ self.cur = self.descend(n[i + 1])
+ return self.cur
+ raise StopIteration()
+
+ def prev(self):
+ for n, i in reversed(self.cur,stack):
+ if i > 0:
+ self.cur = self.descend(n[i - 1])
+ return self.cur
+ raise StopIteration()