comparison piecrust/data/linker.py @ 227:d6d0e4976beb

data: Make the `Linekr` use the new `getSettingAccessor` API.
author Ludovic Chabant <ludovic@chabant.com>
date Wed, 04 Feb 2015 23:50:24 -0800
parents 701591ebfcba
children 879fe1457e48
comparison
equal deleted inserted replaced
226:e9dc18a275ff 227:d6d0e4976beb
17 self.is_self = is_self 17 self.is_self = is_self
18 18
19 @property 19 @property
20 def is_dir(self): 20 def is_dir(self):
21 return False 21 return False
22
23
24 class LinkerSource(IPaginationSource):
25 def __init__(self, pages):
26 self._pages = pages
27
28 def getItemsPerPage(self):
29 raise NotImplementedError()
30
31 def getSourceIterator(self):
32 return self._pages
33
34 def getSorterIterator(self, it):
35 return None
36
37 def getTailIterator(self, it):
38 return None
39
40 def getPaginationFilter(self, page):
41 return None
42
43 def getSettingAccessor(self):
44 return lambda i, n: i.get(n)
22 45
23 46
24 class LinkedPageDataIterator(object): 47 class LinkedPageDataIterator(object):
25 def __init__(self, items): 48 def __init__(self, items):
26 self._items = list(items) 49 self._items = list(items)
109 class RecursiveLinker(Linker): 132 class RecursiveLinker(Linker):
110 def __init__(self, source, *args, **kwargs): 133 def __init__(self, source, *args, **kwargs):
111 super(RecursiveLinker, self).__init__(source, *args, **kwargs) 134 super(RecursiveLinker, self).__init__(source, *args, **kwargs)
112 135
113 def __iter__(self): 136 def __iter__(self):
114 return iter(PageIterator(self._iterateLinkers())) 137 return iter(self.pages)
115 138
116 def siblings(self): 139 def __getattr__(self, name):
117 return PageIterator(self._iterateLinkers(0)) 140 if name == 'pages':
141 return self.getpages()
142 if name == 'siblings':
143 return self.getsiblings()
144 raise AttributeError()
145
146 def getpages(self):
147 src = LinkerSource(self._iterateLinkers())
148 return PageIterator(src)
149
150 def getsiblings(self):
151 src = LinkerSource(self._iterateLinkers(0))
152 return PageIterator(src)
118 153
119 def frompath(self, rel_path): 154 def frompath(self, rel_path):
120 return RecursiveLinker(self.source, name='.', dir_path=rel_path) 155 return RecursiveLinker(self.source, name='.', dir_path=rel_path)
121 156
122 def _iterateLinkers(self, max_depth=-1): 157 def _iterateLinkers(self, max_depth=-1):