##// END OF EJS Templates
manifest: do parsing inside manifestdict contstructor...
Augie Fackler -
r24224:d71837d0 default
parent child Browse files
Show More
@@ -20,17 +20,18 b' def _parsemanifest(mfdict, fdict, lines)'
20 else:
20 else:
21 mfdict[f] = bin(n)
21 mfdict[f] = bin(n)
22
22
23 def _parse(lines):
23 def _parse(lines, mfdict, flags):
24 mfdict = manifestdict()
25 try:
24 try:
26 parsers.parse_manifest(mfdict, mfdict._flags, lines)
25 parsers.parse_manifest(mfdict, flags, lines)
27 except AttributeError:
26 except AttributeError:
28 _parsemanifest(mfdict, mfdict._flags, lines)
27 _parsemanifest(mfdict, flags, lines)
29 return mfdict
28 return mfdict
30
29
31 class manifestdict(dict):
30 class manifestdict(dict):
32 def __init__(self):
31 def __init__(self, data=''):
33 self._flags = {}
32 self._flags = {}
33 _parse(data, self, self._flags)
34
34 def __setitem__(self, k, v):
35 def __setitem__(self, k, v):
35 assert v is not None
36 assert v is not None
36 dict.__setitem__(self, k, v)
37 dict.__setitem__(self, k, v)
@@ -250,7 +251,8 b' class manifest(revlog.revlog):'
250
251
251 def readdelta(self, node):
252 def readdelta(self, node):
252 r = self.rev(node)
253 r = self.rev(node)
253 return _parse(mdiff.patchtext(self.revdiff(self.deltaparent(r), r)))
254 d = mdiff.patchtext(self.revdiff(self.deltaparent(r), r))
255 return manifestdict(d)
254
256
255 def readfast(self, node):
257 def readfast(self, node):
256 '''use the faster of readdelta or read'''
258 '''use the faster of readdelta or read'''
@@ -267,7 +269,7 b' class manifest(revlog.revlog):'
267 return self._mancache[node][0]
269 return self._mancache[node][0]
268 text = self.revision(node)
270 text = self.revision(node)
269 arraytext = array.array('c', text)
271 arraytext = array.array('c', text)
270 m = _parse(text)
272 m = manifestdict(text)
271 self._mancache[node] = (m, arraytext)
273 self._mancache[node] = (m, arraytext)
272 return m
274 return m
273
275
General Comments 0
You need to be logged in to leave comments. Login now