hgweb: extract generator of {files} from changesetentry()
This will be wrapped with mappedgenerator.
--- a/mercurial/hgweb/webutil.py Sat Jan 16 19:23:53 2016 +0900
+++ b/mercurial/hgweb/webutil.py Tue Apr 03 23:25:32 2018 +0900
@@ -463,6 +463,17 @@
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 @@
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 @@
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()),