# HG changeset patch # User Ludovic Chabant # Date 1423122624 28800 # Node ID d6d0e4976beb86943c6d0122c75b7772830354df # Parent e9dc18a275ffe8634adf4ff377ba124cb9e64ed0 data: Make the `Linekr` use the new `getSettingAccessor` API. diff -r e9dc18a275ff -r d6d0e4976beb piecrust/data/linker.py --- a/piecrust/data/linker.py Wed Feb 04 23:49:52 2015 -0800 +++ b/piecrust/data/linker.py Wed Feb 04 23:50:24 2015 -0800 @@ -21,6 +21,29 @@ return False +class LinkerSource(IPaginationSource): + def __init__(self, pages): + self._pages = pages + + def getItemsPerPage(self): + raise NotImplementedError() + + def getSourceIterator(self): + return self._pages + + def getSorterIterator(self, it): + return None + + def getTailIterator(self, it): + return None + + def getPaginationFilter(self, page): + return None + + def getSettingAccessor(self): + return lambda i, n: i.get(n) + + class LinkedPageDataIterator(object): def __init__(self, items): self._items = list(items) @@ -111,10 +134,22 @@ super(RecursiveLinker, self).__init__(source, *args, **kwargs) def __iter__(self): - return iter(PageIterator(self._iterateLinkers())) + return iter(self.pages) - def siblings(self): - return PageIterator(self._iterateLinkers(0)) + def __getattr__(self, name): + if name == 'pages': + return self.getpages() + if name == 'siblings': + return self.getsiblings() + raise AttributeError() + + def getpages(self): + src = LinkerSource(self._iterateLinkers()) + return PageIterator(src) + + def getsiblings(self): + src = LinkerSource(self._iterateLinkers(0)) + return PageIterator(src) def frompath(self, rel_path): return RecursiveLinker(self.source, name='.', dir_path=rel_path)