Mercurial > public > mercurial-scm > hg
comparison mercurial/hgweb/webutil.py @ 37697:6fb50e912aa8
hgweb: make revnav.gen() simply build a list of mappings by one pass
There was actually no lazy stuff.
author | Yuya Nishihara <yuya@tcha.org> |
---|---|
date | Sun, 01 Apr 2018 23:34:29 +0900 |
parents | 9ac3e97b299b |
children | 7738ae638b62 |
comparison
equal
deleted
inserted
replaced
37696:9ac3e97b299b | 37697:6fb50e912aa8 |
---|---|
125 :limit: how far shall we link | 125 :limit: how far shall we link |
126 | 126 |
127 The return is: | 127 The return is: |
128 - a single element tuple | 128 - a single element tuple |
129 - containing a dictionary with a `before` and `after` key | 129 - containing a dictionary with a `before` and `after` key |
130 - values are generator functions taking arbitrary number of kwargs | 130 - values are dictionaries with `label` and `node` keys |
131 - yield items are dictionaries with `label` and `node` keys | |
132 """ | 131 """ |
133 if not self: | 132 if not self: |
134 # empty repo | 133 # empty repo |
135 return ({'before': (), 'after': ()},) | 134 return ({'before': (), 'after': ()},) |
136 | 135 |
141 targets.append(pos + f) | 140 targets.append(pos + f) |
142 targets.append(pos - f) | 141 targets.append(pos - f) |
143 targets.sort() | 142 targets.sort() |
144 | 143 |
145 first = self._first() | 144 first = self._first() |
146 navbefore = [("(%i)" % first, self.hex(first))] | 145 navbefore = [{'label': '(%i)' % first, 'node': self.hex(first)}] |
147 navafter = [] | 146 navafter = [] |
148 for rev in targets: | 147 for rev in targets: |
149 if rev not in self._revlog: | 148 if rev not in self._revlog: |
150 continue | 149 continue |
151 if pos < rev < limit: | 150 if pos < rev < limit: |
152 navafter.append(("+%d" % abs(rev - pos), self.hex(rev))) | 151 navafter.append({'label': '+%d' % abs(rev - pos), |
152 'node': self.hex(rev)}) | |
153 if 0 < rev < pos: | 153 if 0 < rev < pos: |
154 navbefore.append(("-%d" % abs(rev - pos), self.hex(rev))) | 154 navbefore.append({'label': '-%d' % abs(rev - pos), |
155 | 155 'node': self.hex(rev)}) |
156 | 156 |
157 navafter.append(("tip", "tip")) | 157 navafter.append({'label': 'tip', 'node': 'tip'}) |
158 | 158 |
159 data = lambda i: {"label": i[0], "node": i[1]} | 159 return ({'before': navbefore, 'after': navafter},) |
160 return ({'before': lambda **map: (data(i) for i in navbefore), | |
161 'after': lambda **map: (data(i) for i in navafter)},) | |
162 | 160 |
163 class filerevnav(revnav): | 161 class filerevnav(revnav): |
164 | 162 |
165 def __init__(self, repo, path): | 163 def __init__(self, repo, path): |
166 """Navigation generation object | 164 """Navigation generation object |