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