Mercurial > piecrust2
diff piecrust/data/debug.py @ 407:bd56d9acd6ef
debug: Add support for more attributes for the debug info.
* `debug_render_not_empty`: don't render an "empty" label if not attributes
or items have been rendered for an object.
* `debug_render_doc_dynamic`: render dynamic doc-string.
author | Ludovic Chabant <ludovic@chabant.com> |
---|---|
date | Mon, 25 May 2015 18:36:44 -0700 |
parents | d7a548ebcd58 |
children | 32c7c2d219d2 |
line wrap: on
line diff
--- a/piecrust/data/debug.py Mon May 25 18:35:27 2015 -0700 +++ b/piecrust/data/debug.py Mon May 25 18:36:44 2015 -0700 @@ -208,7 +208,8 @@ self._renderDoc(data, path) self._renderAttributes(data, path) rendered_count = self._renderIterable(data, path, lambda d: enumerate(d)) - if rendered_count == 0: + if (rendered_count == 0 and + not hasattr(data.__class__, 'debug_render_not_empty')): self._writeLine('<p style="%s %s">(empty array)</p>' % (CSS_P, CSS_DOC)) self._writeLine('</div>') @@ -218,7 +219,8 @@ self._renderAttributes(data, path) rendered_count = self._renderIterable(data, path, lambda d: sorted(iter(d.items()), key=lambda i: i[0])) - if rendered_count == 0: + if (rendered_count == 0 and + not hasattr(data.__class__, 'debug_render_not_empty')): self._writeLine('<p style="%s %s">(empty dictionary)</p>' % (CSS_P, CSS_DOC)) self._writeLine('</div>') @@ -240,10 +242,12 @@ data.__class__.debug_render_items): rendered_count = self._renderIterable(data, path, lambda d: enumerate(d)) - if rendered_count == 0: + if (rendered_count == 0 and + not hasattr(data.__class__, 'debug_render_not_empty')): self._writeLine('<p style="%s %s">(empty)</p>' % (CSS_P, CSS_DOC)) - elif rendered_attrs == 0: + elif (rendered_attrs == 0 and + not hasattr(data.__class__, 'debug_render_not_empty')): self._writeLine('<p style="%s %s">(empty)</p>' % (CSS_P, CSS_DOC)) self._writeLine('</div>') @@ -265,6 +269,13 @@ self._writeLine('<span style="%s">– %s</span>' % (CSS_DOC, data.__class__.debug_render_doc)) + if hasattr(data.__class__, 'debug_render_doc_dynamic'): + drdd = data.__class__.debug_render_doc_dynamic + for ng in drdd: + doc = getattr(data, ng) + self._writeLine('<span style="%s">– %s</span>' % + (CSS_DOC, doc())) + doc = self.external_docs.get(path) if doc is not None: self._writeLine('<span style="%s">– %s</span>' %