language: Python (python 2.7.3)
date: 206 days 16 hours ago
link:
visibility: private
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
class Page(object):
    def __init__(self, name, pages=None):
        self.name = name
        self.pages = pages if pages is not None else []
    def __iter__(self):
        return iter(self.pages) # only immediate children
    def walk(self, topdown=True): # all pages recursively
        if topdown:
            yield self
        for page in self:
            for subpage in page.walk(topdown):
                yield subpage
        if not topdown:
            yield self
 
 
page = Page('FirstPage', [
        Page('FirstChild', [
                Page('FirstChildChild'),
                Page('SecondChildChild'),
                ]),
        Page('SecondChild'),
        ])
 
for p in page.walk():
    print(p.name)