diff mercurial/templateutil.py @ 37019:c97b936d8bb5

templater: use named function to expand template against mapping dict (API) And replace __call__(t, **mapping) in favor of generate(t, mapping). I prefer a named function here since the templater isn't a simple function-like object. .. api:: The templater is no longer callable. Use ``templater.generate(t, mapping)`` instead of ``templater(t, **pycompat.strkwargs(mapping))``.
author Yuya Nishihara <yuya@tcha.org>
date Fri, 16 Mar 2018 21:39:32 +0900
parents 255f635c3204
children aa97e06a1912
line wrap: on
line diff
--- a/mercurial/templateutil.py	Mon Mar 19 21:09:23 2018 +0900
+++ b/mercurial/templateutil.py	Fri Mar 16 21:39:32 2018 +0900
@@ -184,13 +184,12 @@
 
     expand 'end_foos'.
     '''
-    strmapping = pycompat.strkwargs(mapping)
     if not plural:
         plural = name + 's'
     if not values:
         noname = 'no_' + plural
         if noname in templ:
-            yield templ(noname, **strmapping)
+            yield templ.generate(noname, mapping)
         return
     if name not in templ:
         if isinstance(values[0], bytes):
@@ -203,7 +202,7 @@
         return
     startname = 'start_' + plural
     if startname in templ:
-        yield templ(startname, **strmapping)
+        yield templ.generate(startname, mapping)
     vmapping = mapping.copy()
     def one(v, tag=name):
         try:
@@ -218,7 +217,7 @@
                     vmapping[a] = b
             except (TypeError, ValueError):
                 vmapping[name] = v
-        return templ(tag, **pycompat.strkwargs(vmapping))
+        return templ.generate(tag, vmapping)
     lastname = 'last_' + name
     if lastname in templ:
         last = values.pop()
@@ -230,7 +229,7 @@
         yield one(last, tag=lastname)
     endname = 'end_' + plural
     if endname in templ:
-        yield templ(endname, **strmapping)
+        yield templ.generate(endname, mapping)
 
 def stringify(thing):
     """Turn values into bytes by converting into text and concatenating them"""