Mercurial > public > mercurial-scm > hg-stable
diff mercurial/templater.py @ 24240:bd504d90588d
templater: implement _hybrid.__contains__ so that ifcontains can accept dict
d8fb835376d1 is fine for "{revset()}", but "i.values()[0]" does not work if
each item has more than one values such as "{bookmarks}".
This fixes the problem by using list.__contains__ or dict.__contains__
appropriately.
author | Yuya Nishihara <yuya@tcha.org> |
---|---|
date | Wed, 18 Feb 2015 23:01:33 +0900 |
parents | fafd9a1284cf |
children | 6c55e37ba5f2 |
line wrap: on
line diff
--- a/mercurial/templater.py Sun Mar 08 14:46:42 2015 +0900 +++ b/mercurial/templater.py Wed Feb 18 23:01:33 2015 +0900 @@ -330,10 +330,7 @@ item = stringify(args[0][0](context, mapping, args[0][1])) items = args[1][0](context, mapping, args[1][1]) - # Iterating over items gives a formatted string, so we iterate - # directly over the raw values. - if ((callable(items) and item in [i.values()[0] for i in items()]) or - (isinstance(items, str) and item in items)): + if item in items: yield _evalifliteral(args[2], context, mapping) elif len(args) == 4: yield _evalifliteral(args[3], context, mapping)