mirror of
https://github.com/facebook/sapling.git
synced 2024-10-07 15:27:13 +03:00
webutil: make _siblings into an object with __iter__ and __len__
_siblings is a helper that is used for displaying changeset parents and children in hgweb. Before, when it was a simple generator, it couldn't tell its length without being consumed, and that required a special case when preparing data for changeset template (see 3468fd599ef4). Let's make it into a class (similar to templatekw._hybrid) that allows len(...) without side-effects.
This commit is contained in:
parent
a19a04c7f9
commit
53412195f4
@ -125,20 +125,28 @@ class filerevnav(revnav):
|
||||
def hex(self, rev):
|
||||
return hex(self._changelog.node(self._revlog.linkrev(rev)))
|
||||
|
||||
class _siblings(object):
|
||||
def __init__(self, siblings=[], hiderev=None):
|
||||
self.siblings = [s for s in siblings if s.node() != nullid]
|
||||
if len(self.siblings) == 1 and self.siblings[0].rev() == hiderev:
|
||||
self.siblings = []
|
||||
|
||||
def _siblings(siblings=[], hiderev=None):
|
||||
siblings = [s for s in siblings if s.node() != nullid]
|
||||
if len(siblings) == 1 and siblings[0].rev() == hiderev:
|
||||
return
|
||||
for s in siblings:
|
||||
d = {'node': s.hex(), 'rev': s.rev()}
|
||||
d['user'] = s.user()
|
||||
d['date'] = s.date()
|
||||
d['description'] = s.description()
|
||||
d['branch'] = s.branch()
|
||||
if util.safehasattr(s, 'path'):
|
||||
d['file'] = s.path()
|
||||
yield d
|
||||
def __iter__(self):
|
||||
for s in self.siblings:
|
||||
d = {
|
||||
'node': s.hex(),
|
||||
'rev': s.rev(),
|
||||
'user': s.user(),
|
||||
'date': s.date(),
|
||||
'description': s.description(),
|
||||
'branch': s.branch(),
|
||||
}
|
||||
if util.safehasattr(s, 'path'):
|
||||
d['file'] = s.path()
|
||||
yield d
|
||||
|
||||
def __len__(self):
|
||||
return len(self.siblings)
|
||||
|
||||
def parents(ctx, hide=None):
|
||||
if isinstance(ctx, context.basefilectx):
|
||||
@ -355,7 +363,7 @@ def changesetentry(web, req, tmpl, ctx):
|
||||
rev=ctx.rev(),
|
||||
node=ctx.hex(),
|
||||
symrev=symrevorshortnode(req, ctx),
|
||||
parent=tuple(parents(ctx)),
|
||||
parent=parents(ctx),
|
||||
child=children(ctx),
|
||||
basenode=basectx.hex(),
|
||||
changesettag=showtags,
|
||||
|
Loading…
Reference in New Issue
Block a user