comparison piecrust/data/provider.py @ 408:fd8e39254da0

debug: Better debug info output for iterators, providers, and linkers.
author Ludovic Chabant <ludovic@chabant.com>
date Mon, 25 May 2015 18:37:34 -0700
parents 4b1019bb2533
children e7b865f8f335
comparison
equal deleted inserted replaced
407:bd56d9acd6ef 408:fd8e39254da0
35 35
36 36
37 class IteratorDataProvider(DataProvider): 37 class IteratorDataProvider(DataProvider):
38 PROVIDER_NAME = 'iterator' 38 PROVIDER_NAME = 'iterator'
39 39
40 debug_render_doc = """Provides a list of pages.""" 40 debug_render_doc_dynamic = ['_debugRenderDoc']
41 debug_render_not_empty = True
41 42
42 def __init__(self, source, page, user_data): 43 def __init__(self, source, page, user_data):
43 self._innerIt = None 44 self._innerIt = None
44 if isinstance(user_data, IteratorDataProvider): 45 if isinstance(user_data, IteratorDataProvider):
45 # Iterator providers can be chained, like for instance with 46 # Iterator providers can be chained, like for instance with
67 def _onIteration(self): 68 def _onIteration(self):
68 if not self._ctx_set: 69 if not self._ctx_set:
69 eis = self._page.app.env.exec_info_stack 70 eis = self._page.app.env.exec_info_stack
70 eis.current_page_info.render_ctx.addUsedSource(self._source.name) 71 eis.current_page_info.render_ctx.addUsedSource(self._source.name)
71 self._ctx_set = True 72 self._ctx_set = True
73
74 def _debugRenderDoc(self):
75 return 'Provides a list of %d items' % len(self)
72 76
73 77
74 class BlogDataProvider(DataProvider): 78 class BlogDataProvider(DataProvider):
75 PROVIDER_NAME = 'blog' 79 PROVIDER_NAME = 'blog'
76 80