changeset 37323:8c31b434697f

templater: define interface for objects which act as iterator of mappings
author Yuya Nishihara <yuya@tcha.org>
date Sat, 17 Mar 2018 21:21:50 +0900
parents a67fd1fe5109
children c2f74b8f6b7f
files mercurial/templateutil.py
diffstat 1 files changed, 5 insertions(+), 1 deletions(-) [+]
line wrap: on
line diff
--- a/mercurial/templateutil.py	Wed Apr 04 23:26:49 2018 +0900
+++ b/mercurial/templateutil.py	Sat Mar 17 21:21:50 2018 +0900
@@ -38,6 +38,10 @@
     __metaclass__ = abc.ABCMeta
 
     @abc.abstractmethod
+    def itermaps(self):
+        """Yield each template mapping"""
+
+    @abc.abstractmethod
     def show(self, context, mapping):
         """Return a bytes or (possibly nested) generator of bytes representing
         the underlying object
@@ -493,7 +497,7 @@
 def runmap(context, mapping, data):
     darg, targ = data
     d = evalrawexp(context, mapping, darg)
-    if util.safehasattr(d, 'itermaps'):
+    if isinstance(d, wrapped):
         diter = d.itermaps()
     else:
         try: