mercurial/cmdutil.py
changeset 10152 56284451a22c
parent 10111 27457d31ae3f
child 10160 48653dea23dd
--- a/mercurial/cmdutil.py	Tue Dec 29 16:00:38 2009 +0100
+++ b/mercurial/cmdutil.py	Mon Dec 28 17:55:52 2009 +0100
@@ -637,6 +637,7 @@
         self.header = {}
         self.hunk = {}
         self.lastheader = None
+        self.footer = None
 
     def flush(self, rev):
         if rev in self.header:
@@ -651,6 +652,10 @@
             return 1
         return 0
 
+    def close(self):
+        if self.footer:
+            self.ui.write(self.footer)
+
     def show(self, ctx, copies=None, **props):
         if self.buffered:
             self.ui.pushbuffer()
@@ -817,7 +822,7 @@
             (self.ui.debugflag, 'debug'),
         ]
 
-        types = {'header': '', 'changeset': 'changeset'}
+        types = {'header': '', 'footer':'', 'changeset': 'changeset'}
         for mode, postfix  in tmplmodes:
             for type in types:
                 cur = postfix and ('%s_%s' % (type, postfix)) or type
@@ -839,6 +844,11 @@
             self.ui.write(templater.stringify(self.t(key, **props)))
             self.showpatch(ctx.node())
 
+            if types['header']:
+                if not self.footer:
+                    self.footer = templater.stringify(self.t(types['footer'],
+                                                      **props))
+
         except KeyError, inst:
             msg = _("%s: no key named '%s'")
             raise util.Abort(msg % (self.t.mapfile, inst.args[0]))