mercurial/hgweb/webutil.py
changeset 18403 bfaee31a83d2
parent 18392 88a37b19dc0e
child 18404 1da84a6b136a
--- a/mercurial/hgweb/webutil.py	Wed Jan 16 12:51:24 2013 +0100
+++ b/mercurial/hgweb/webutil.py	Tue Jan 15 21:17:18 2013 +0100
@@ -39,41 +39,43 @@
         yield 3 * step
         step *= 10
 
-def revnavgen(pos, pagelen, limit, nodefunc):
-    """computes label and revision id for navigation link
+class revnav(object):
 
-    :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
+    def gen(self, pos, pagelen, limit, nodefunc):
+        """computes label and revision id for navigation link
 
-    The return is:
-        - a single element tuple
-        - containing a dictionary with a `before` and `after` key
-        - values are generator functions taking an arbitrary number of kwargs
-        - yield items are dictionaries with `label` and `node` keys
-    """
+        :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
 
-    navbefore = []
-    navafter = []
+        The return is:
+            - a single element tuple
+            - containing a dictionary with a `before` and `after` key
+            - values are generator functions taking arbitrary number of kwargs
+            - yield items are dictionaries with `label` and `node` keys
+        """
 
-    for f in _navseq(1, pagelen):
-        if f > limit:
-            break
-        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())))
+        navbefore = []
+        navafter = []
 
-    navafter.append(("tip", "tip"))
-    try:
-        navbefore.insert(0, ("(0)", hex(nodefunc(0).node())))
-    except error.RepoError:
-        pass
+        for f in _navseq(1, pagelen):
+            if f > limit:
+                break
+            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())))
 
-    data = lambda i: {"label": i[0], "node": i[1]}
-    return ({'before': lambda **map: (data(i) for i in navbefore),
-             'after':  lambda **map: (data(i) for i in navafter)},)
+        navafter.append(("tip", "tip"))
+        try:
+            navbefore.insert(0, ("(0)", hex(nodefunc(0).node())))
+        except error.RepoError:
+            pass
+
+        data = lambda i: {"label": i[0], "node": i[1]}
+        return ({'before': lambda **map: (data(i) for i in navbefore),
+                 'after':  lambda **map: (data(i) for i in navafter)},)
 
 def _siblings(siblings=[], hiderev=None):
     siblings = [s for s in siblings if s.node() != nullid]