diff -r 0bc93fa2cf2b -r 8d5de52431f2 mercurial/hgweb/webutil.py --- a/mercurial/hgweb/webutil.py Fri Jan 15 21:32:53 2010 +0100 +++ b/mercurial/hgweb/webutil.py Sat Jan 16 02:33:06 2010 +0100 @@ -32,31 +32,34 @@ for f in seq(factor * 10): yield f - def nav(**map): - l = [] - last = 0 - for f in seq(1, pagelen): - if f < pagelen or f <= last: - continue - if f > limit: - break - last = f - if pos + f < limit: - l.append(("+%d" % f, hex(nodefunc(pos + f).node()))) - if pos - f >= 0: - l.insert(0, ("-%d" % f, hex(nodefunc(pos - f).node()))) + navbefore = [] + navafter = [] - try: - yield {"label": "(0)", "node": hex(nodefunc('0').node())} + last = 0 + for f in seq(1, pagelen): + if f < pagelen or f <= last: + continue + if f > limit: + break + last = f + if pos + f < limit: + navafter.append(("+%d" % f, hex(nodefunc(pos + f).node()))) + if pos - f >= 0: + navbefore.insert(0, ("-%d" % f, hex(nodefunc(pos - f).node()))) + navafter.append(("tip", "tip")) + try: + navbefore.insert(0, ("(0)", hex(nodefunc('0').node()))) + except error.RepoError: + pass + + def gen(l): + def f(**map): for label, node in l: yield {"label": label, "node": node} + return f - yield {"label": "tip", "node": "tip"} - except error.RepoError: - pass - - return nav + return (dict(before=gen(navbefore), after=gen(navafter)), ) def _siblings(siblings=[], hiderev=None): siblings = [s for s in siblings if s.node() != nullid]