# HG changeset patch # User Yuya Nishihara # Date 2018-04-03 14:25:32 # Node ID 1129e444fd6c979c3b3a000918fa3f062f1ae3f8 # Parent a25513263075d9698d821fbf9f156f4aa7fc709b 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()),