templater: pass (context, mapping) down to unwrapvalue()
authorYuya Nishihara <yuya@tcha.org>
Sun, 18 Mar 2018 23:14:21 +0900
changeset 37277 9e8128e84326
parent 37276 b4630e332a99
child 37278 671a01cd50b5
templater: pass (context, mapping) down to unwrapvalue() The same reason as why I made unwraphybrid() take a (context, mapping) pair.
mercurial/templatefuncs.py
mercurial/templateutil.py
--- 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