[PATCH 1 of 6] hgweb: extract generator of {files} from changesetentry()

Yuya Nishihara yuya at tcha.org
Thu May 10 10:16:06 EDT 2018


# HG changeset patch
# User Yuya Nishihara <yuya at tcha.org>
# Date 1522765532 -32400
#      Tue Apr 03 23:25:32 2018 +0900
# Node ID e732dac3aa0afd04b2192cbf723147e88f6a0d6f
# Parent  1943cc2fad78346bac406fa390fe2634e426338c
hgweb: extract generator of {files} from changesetentry()

This will be wrapped with mappedgenerator.

diff --git a/mercurial/hgweb/webutil.py b/mercurial/hgweb/webutil.py
--- a/mercurial/hgweb/webutil.py
+++ b/mercurial/hgweb/webutil.py
@@ -463,6 +463,17 @@ def symrevorshortnode(req, ctx):
     else:
         return short(ctx.node())
 
+def _listfilesgen(tmpl, ctx, stripecount):
+    parity = paritygen(stripecount)
+    for blockno, f in enumerate(ctx.files()):
+        template = 'filenodelink' if f in ctx else 'filenolink'
+        yield tmpl.generate(template, {
+            'node': ctx.hex(),
+            'file': f,
+            'blockno': blockno + 1,
+            'parity': next(parity),
+        })
+
 def changesetentry(web, ctx):
     '''Obtain a dictionary to be used to render the "changeset" template.'''
 
@@ -470,17 +481,6 @@ def changesetentry(web, ctx):
     showbookmarks = showbookmark(web.repo, 'changesetbookmark', ctx.node())
     showbranch = nodebranchnodefault(ctx)
 
-    files = []
-    parity = paritygen(web.stripecount)
-    for blockno, f in enumerate(ctx.files()):
-        template = 'filenodelink' if f in ctx else 'filenolink'
-        files.append(web.tmpl.generate(template, {
-            'node': ctx.hex(),
-            'file': f,
-            'blockno': blockno + 1,
-            'parity': next(parity),
-        }))
-
     basectx = basechangectx(web.repo, web.req)
     if basectx is None:
         basectx = ctx.p1()
@@ -502,7 +502,7 @@ def changesetentry(web, ctx):
         changesettag=showtags,
         changesetbookmark=showbookmarks,
         changesetbranch=showbranch,
-        files=files,
+        files=list(_listfilesgen(web.tmpl, ctx, web.stripecount)),
         diffsummary=lambda **x: diffsummary(diffstatsgen),
         diffstat=diffstats,
         archives=web.archivelist(ctx.hex()),


More information about the Mercurial-devel mailing list