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),