templater: pass (context, mapping) down to unwrapvalue()
The same reason as why I made unwraphybrid() take a (context, mapping) pair.
--- a/mercurial/templatefuncs.py Sat Mar 17 20:58:28 2018 +0900
+++ b/mercurial/templatefuncs.py Sun Mar 18 23:14:21 2018 +0900
@@ -319,7 +319,7 @@
# TODO: perhaps this should be evalfuncarg(), but it can't because hgweb
# abuses generator as a keyword that returns a list of dicts.
joinset = evalrawexp(context, mapping, args[0])
- joinset = templateutil.unwrapvalue(joinset)
+ joinset = templateutil.unwrapvalue(context, mapping, joinset)
joinfmt = getattr(joinset, 'joinfmt', pycompat.identity)
joiner = " "
if len(args) > 1:
--- a/mercurial/templateutil.py Sat Mar 17 20:58:28 2018 +0900
+++ b/mercurial/templateutil.py Sun Mar 18 23:14:21 2018 +0900
@@ -157,7 +157,7 @@
return thing
return thing.show(context, mapping)
-def unwrapvalue(thing):
+def unwrapvalue(context, mapping, thing):
"""Move the inner value object out of the wrapper"""
if not util.safehasattr(thing, '_value'):
return thing
@@ -327,7 +327,7 @@
# is fixed. we can't do that right now because join() has to take a generator
# of byte strings as it is, not a lazy byte string.
def _unwrapvalue(context, mapping, thing):
- thing = unwrapvalue(thing)
+ thing = unwrapvalue(context, mapping, thing)
# evalrawexp() may return string, generator of strings or arbitrary object
# such as date tuple, but filter does not want generator.
if isinstance(thing, types.GeneratorType):
@@ -344,7 +344,7 @@
thing = stringutil.parsebool(data)
else:
thing = func(context, mapping, data)
- thing = unwrapvalue(thing)
+ thing = unwrapvalue(context, mapping, thing)
if isinstance(thing, bool):
return thing
# other objects are evaluated as strings, which means 0 is True, but