manifest: move pure parsing code out of pure
authorMatt Mackall <mpm@selenic.com>
Fri, 06 Mar 2015 17:00:42 -0600
changeset 24215 feddc5284724
parent 24214 a5f1bccd2996
child 24216 4bb348ae43cb
manifest: move pure parsing code out of pure This lets us transition more smoothly.
mercurial/manifest.py
mercurial/pure/parsers.py
--- a/mercurial/manifest.py	Tue Jan 13 14:31:38 2015 -0800
+++ b/mercurial/manifest.py	Fri Mar 06 17:00:42 2015 -0600
@@ -217,9 +217,23 @@
                    + content for start, end, content in x)
     return deltatext, newaddlist
 
+# Pure Python fallback
+def _parsemanifest(mfdict, fdict, lines):
+    bin = revlog.bin
+    for l in lines.splitlines():
+        f, n = l.split('\0')
+        if len(n) > 40:
+            fdict[f] = n[40:]
+            mfdict[f] = bin(n[:40])
+        else:
+            mfdict[f] = bin(n)
+
 def _parse(lines):
     mfdict = manifestdict()
-    parsers.parse_manifest(mfdict, mfdict._flags, lines)
+    try:
+        parsers.parse_manifest(mfdict, mfdict._flags, lines)
+    except AttributeError:
+        _parsemanifest(mfdict, mfdict._flags, lines)
     return mfdict
 
 class manifest(revlog.revlog):
--- a/mercurial/pure/parsers.py	Tue Jan 13 14:31:38 2015 -0800
+++ b/mercurial/pure/parsers.py	Fri Mar 06 17:00:42 2015 -0600
@@ -5,7 +5,7 @@
 # This software may be used and distributed according to the terms of the
 # GNU General Public License version 2 or any later version.
 
-from mercurial.node import bin, nullid
+from mercurial.node import nullid
 from mercurial import util
 import struct, zlib, cStringIO
 
@@ -21,15 +21,6 @@
     # x is a tuple
     return x
 
-def parse_manifest(mfdict, fdict, lines):
-    for l in lines.splitlines():
-        f, n = l.split('\0')
-        if len(n) > 40:
-            fdict[f] = n[40:]
-            mfdict[f] = bin(n[:40])
-        else:
-            mfdict[f] = bin(n)
-
 def parse_index2(data, inline):
     def gettype(q):
         return int(q & 0xFFFF)