Mercurial > hg
comparison mercurial/hgweb/webutil.py @ 18425:6da1e979340a
hgweb: generate revnav in two phase
We first generate revision to link. Then we dispatch them in before, after list.
This will help filtering of unknown revision.
author | Pierre-Yves David <pierre-yves.david@logilab.fr> |
---|---|
date | Thu, 10 Jan 2013 19:29:48 +0100 |
parents | e3f5cef11d6a |
children | 01638b51df44 |
comparison
equal
deleted
inserted
replaced
18424:100fdc84670f | 18425:6da1e979340a |
---|---|
75 """ | 75 """ |
76 if not self: | 76 if not self: |
77 # empty repo | 77 # empty repo |
78 return ({'before': (), 'after': ()},) | 78 return ({'before': (), 'after': ()},) |
79 | 79 |
80 navbefore = [("(0)", self.hex(0))] | 80 targets = [] |
81 navafter = [] | |
82 | |
83 for f in _navseq(1, pagelen): | 81 for f in _navseq(1, pagelen): |
84 if f > limit: | 82 if f > limit: |
85 break | 83 break |
86 if pos + f < limit: | 84 targets.append(pos + f) |
87 navafter.append(("+%d" % f, self.hex(pos + f))) | 85 targets.append(pos - f) |
88 if pos - f >= 0: | 86 targets.sort() |
89 navbefore.insert(0, ("-%d" % f, self.hex(pos - f))) | 87 |
88 navbefore = [("(0)", self.hex(0))] | |
89 navafter = [] | |
90 for rev in targets: | |
91 if pos < rev < limit: | |
92 navafter.append(("+%d" % f, self.hex(rev))) | |
93 if 0 < rev < pos: | |
94 navbefore.append(("-%d" % f, self.hex(rev))) | |
95 | |
90 | 96 |
91 navafter.append(("tip", "tip")) | 97 navafter.append(("tip", "tip")) |
92 | 98 |
93 data = lambda i: {"label": i[0], "node": i[1]} | 99 data = lambda i: {"label": i[0], "node": i[1]} |
94 return ({'before': lambda **map: (data(i) for i in navbefore), | 100 return ({'before': lambda **map: (data(i) for i in navbefore), |