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)