Mercurial > public > mercurial-scm > hg
diff mercurial/templatefilters.py @ 31880:a0f2d83f8083
templater: remove __iter__() from _hybrid, resolve it explicitly
The goal is to fix "{hybrid_obj|json}" output.
A _hybrid object must act as a list or a dict as well as a generator of
legacy template strings. Before, _hybrid.__iter__() was assigned for legacy
template, which conflicted with list.__iter__() API.
This patch drops _hybrid.__iter__() and makes stringify/flatten functions
unwrap a generator instead.
author | Yuya Nishihara <yuya@tcha.org> |
---|---|
date | Tue, 04 Apr 2017 22:19:02 +0900 |
parents | 654e9a1c8a6c |
children | e5eab0fe69ee |
line wrap: on
line diff
--- a/mercurial/templatefilters.py Sun Apr 24 19:15:34 2016 +0900 +++ b/mercurial/templatefilters.py Tue Apr 04 22:19:02 2017 +0900 @@ -350,6 +350,7 @@ """Any type. Turns the value into text by converting values into text and concatenating them. """ + thing = templatekw.unwraphybrid(thing) if util.safehasattr(thing, '__iter__') and not isinstance(thing, str): return "".join([stringify(t) for t in thing if t is not None]) if thing is None: