Mercurial > piecrust2
comparison piecrust/data/linker.py @ 402:043b9d8304c7 2.0.0a11
linker: Fix linker returning the wrong value for `is_dir` in some situations.
author | Ludovic Chabant <ludovic@chabant.com> |
---|---|
date | Mon, 18 May 2015 23:45:51 -0700 |
parents | 8e1e55ad35fb |
children | 27b10024f8d8 |
comparison
equal
deleted
inserted
replaced
401:8e1e55ad35fb | 402:043b9d8304c7 |
---|---|
45 def __init__(self, page): | 45 def __init__(self, page): |
46 super(LinkedPageData, self).__init__(page) | 46 super(LinkedPageData, self).__init__(page) |
47 self.name = page._linker_info.name | 47 self.name = page._linker_info.name |
48 self.is_self = page._linker_info.is_self | 48 self.is_self = page._linker_info.is_self |
49 self.children = page._linker_info.child_linker | 49 self.children = page._linker_info.child_linker |
50 self.is_dir = (self.children is not None) | 50 self.is_dir = page._linker_info.is_dir |
51 self.is_page = True | 51 self.is_page = True |
52 | 52 |
53 self.mapLoader('*', self._linkerChildLoader) | 53 self.mapLoader('*', self._linkerChildLoader) |
54 | 54 |
55 def _linkerChildLoader(self, data, name): | 55 def _linkerChildLoader(self, data, name): |
102 | 102 |
103 | 103 |
104 class _LinkerInfo(object): | 104 class _LinkerInfo(object): |
105 def __init__(self): | 105 def __init__(self): |
106 self.name = None | 106 self.name = None |
107 self.is_dir = False | |
107 self.is_self = False | 108 self.is_self = False |
108 self.child_linker = [] | 109 self.child_linker = [] |
109 | 110 |
110 | 111 |
111 class _LinkedPage(object): | 112 class _LinkedPage(object): |
230 self._items[name] = item | 231 self._items[name] = item |
231 elif is_dir: | 232 elif is_dir: |
232 # The current item is a directory. The existing item | 233 # The current item is a directory. The existing item |
233 # should be a page. | 234 # should be a page. |
234 existing._linker_info.child_linker = item | 235 existing._linker_info.child_linker = item |
236 existing._linker_info.is_dir = True | |
235 else: | 237 else: |
236 # The current item is a page. The existing item should | 238 # The current item is a page. The existing item should |
237 # be a directory. | 239 # be a directory. |
238 item._linker_info.child_linker = existing | 240 item._linker_info.child_linker = existing |
241 item._linker_info.is_dir = True | |
239 self._items[name] = item | 242 self._items[name] = item |
240 | 243 |
241 | 244 |
242 def filter_page_items(item): | 245 def filter_page_items(item): |
243 return not isinstance(item, Linker) | 246 return not isinstance(item, Linker) |