[PATCH 1 of 2] store: refactor fncacheopener into a class
Adrian Buehlmann
adrian at cadifra.com
Thu Mar 31 13:05:36 CDT 2011
# HG changeset patch
# User Adrian Buehlmann <adrian at cadifra.com>
# Date 1301588551 -7200
# Node ID 59407bbe840ae49ecc0823dd7d0acf8e731fca2f
# Parent f1823b9f073bd376e19fc544c2891609458891e4
store: refactor fncacheopener into a class
diff --git a/mercurial/store.py b/mercurial/store.py
--- a/mercurial/store.py
+++ b/mercurial/store.py
@@ -298,6 +298,17 @@
self._load()
return iter(self.entries)
+class _fncacheopener(object):
+ def __init__(self, op, fnc, encode):
+ self.opener = op
+ self.fncache = fnc
+ self.encode = encode
+
+ def __call__(self, path, mode='r', *args, **kw):
+ if mode not in ('r', 'rb') and path.startswith('data/'):
+ self.fncache.add(path)
+ return self.opener(self.encode(path), mode, *args, **kw)
+
class fncachestore(basicstore):
def __init__(self, path, opener, encode):
self.encode = encode
@@ -307,12 +318,7 @@
op.createmode = self.createmode
fnc = fncache(op)
self.fncache = fnc
-
- def fncacheopener(path, mode='r', *args, **kw):
- if mode not in ('r', 'rb') and path.startswith('data/'):
- fnc.add(path)
- return op(self.encode(path), mode, *args, **kw)
- self.opener = fncacheopener
+ self.opener = _fncacheopener(op, fnc, encode)
def join(self, f):
return self.path + '/' + self.encode(f)
More information about the Mercurial-devel
mailing list