Mercurial > hg-stable
changeset 18404:1da84a6b136a
hgweb: pass nodefunc to the revnav object
The issue between hgweb and filtering lay in this function. Moving it into the
object itself helps to abstract the erroneous bit.
author | Pierre-Yves David <pierre-yves.david@logilab.fr> |
---|---|
date | Thu, 10 Jan 2013 18:59:37 +0100 |
parents | bfaee31a83d2 |
children | 1eaf0d017b2c |
files | mercurial/hgweb/webcommands.py mercurial/hgweb/webutil.py |
diffstat | 2 files changed, 16 insertions(+), 8 deletions(-) [+] |
line wrap: on
line diff
--- a/mercurial/hgweb/webcommands.py Tue Jan 15 21:17:18 2013 +0100 +++ b/mercurial/hgweb/webcommands.py Thu Jan 10 18:59:37 2013 +0100 @@ -242,7 +242,7 @@ pos = end - 1 parity = paritygen(web.stripecount, offset=start - end) - changenav = webutil.revnav().gen(pos, revcount, count, web.repo.changectx) + changenav = webutil.revnav(web.repo.changectx).gen(pos, revcount, count) return tmpl(shortlog and 'shortlog' or 'changelog', changenav=changenav, node=ctx.hex(), rev=pos, changesets=count, @@ -772,7 +772,7 @@ yield e nodefunc = lambda x: fctx.filectx(fileid=x) - nav = webutil.revnav().gen(end - 1, revcount, count, nodefunc) + nav = webutil.revnav(nodefunc).gen(end - 1, revcount, count) return tmpl("filelog", file=f, node=fctx.hex(), nav=nav, entries=lambda **x: entries(latestonly=False, **x), latestentry=lambda **x: entries(latestonly=True, **x), @@ -851,7 +851,7 @@ uprev = min(max(0, count - 1), rev + revcount) downrev = max(0, rev - revcount) - changenav = webutil.revnav().gen(pos, revcount, count, web.repo.changectx) + changenav = webutil.revnav(web.repo.changectx).gen(pos, revcount, count) dag = graphmod.dagwalker(web.repo, range(start, end)[::-1]) tree = list(graphmod.colored(dag, web.repo))
--- a/mercurial/hgweb/webutil.py Tue Jan 15 21:17:18 2013 +0100 +++ b/mercurial/hgweb/webutil.py Thu Jan 10 18:59:37 2013 +0100 @@ -41,13 +41,19 @@ class revnav(object): - def gen(self, pos, pagelen, limit, nodefunc): + def __init__(self, nodefunc): + """Navigation generation object + + :nodefun: factory for a changectx from a revision + """ + self.nodefunc = nodefunc + + def gen(self, pos, pagelen, limit): """computes label and revision id for navigation link :pos: is the revision relative to which we generate navigation. :pagelen: the size of each navigation page :limit: how far shall we link - :nodefun: factory for a changectx from a revision The return is: - a single element tuple @@ -63,13 +69,15 @@ if f > limit: break if pos + f < limit: - navafter.append(("+%d" % f, hex(nodefunc(pos + f).node()))) + navafter.append(("+%d" % f, + hex(self.nodefunc(pos + f).node()))) if pos - f >= 0: - navbefore.insert(0, ("-%d" % f, hex(nodefunc(pos - f).node()))) + navbefore.insert(0, ("-%d" % f, + hex(self.nodefunc(pos - f).node()))) navafter.append(("tip", "tip")) try: - navbefore.insert(0, ("(0)", hex(nodefunc(0).node()))) + navbefore.insert(0, ("(0)", hex(self.nodefunc(0).node()))) except error.RepoError: pass