Mercurial > piecrust2
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): |