changeset 8443:53ff4a5af284

changelog: turn {de,en}code_extra methods into functions The methods were not really methods -- they didn't use 'self'. Having them as functions in the module it useful for other modules (like the commitsigs extension) that want to recompute the changeset hash and thus want to encode dicts the same way as changelog does it. Removed the underbars from their names at the same time.
author Martin Geisler <mg@lazybytes.net>
date Fri, 15 May 2009 01:21:24 +0200
parents 3acc6279b364
children 057e96fe2955
files mercurial/changelog.py
diffstat 1 files changed, 15 insertions(+), 15 deletions(-) [+]
line wrap: on
line diff
--- a/mercurial/changelog.py	Sat May 16 11:16:23 2009 +0200
+++ b/mercurial/changelog.py	Fri May 15 01:21:24 2009 +0200
@@ -23,6 +23,19 @@
     text = text.replace('\\', '\\\\').replace('\n', '\\n').replace('\r', '\\r')
     return text.replace('\0', '\\0')
 
+def decodeextra(text):
+    extra = {}
+    for l in text.split('\0'):
+        if l:
+            k, v = l.decode('string_escape').split(':', 1)
+            extra[k] = v
+    return extra
+
+def encodeextra(d):
+    # keys must be sorted to produce a deterministic changelog entry
+    items = [_string_escape('%s:%s' % (k, d[k])) for k in sorted(d)]
+    return "\0".join(items)
+
 class appender:
     '''the changelog index must be updated last on disk, so we use this class
     to delay writes to it'''
@@ -145,19 +158,6 @@
             return
         return revlog.revlog.checkinlinesize(self, tr, fp)
 
-    def decode_extra(self, text):
-        extra = {}
-        for l in text.split('\0'):
-            if l:
-                k, v = l.decode('string_escape').split(':', 1)
-                extra[k] = v
-        return extra
-
-    def encode_extra(self, d):
-        # keys must be sorted to produce a deterministic changelog entry
-        items = [_string_escape('%s:%s' % (k, d[k])) for k in sorted(d)]
-        return "\0".join(items)
-
     def read(self, node):
         """
         format used:
@@ -192,7 +192,7 @@
         else:
             time, timezone, extra = extra_data
             time, timezone = float(time), int(timezone)
-            extra = self.decode_extra(extra)
+            extra = decodeextra(extra)
         if not extra.get('branch'):
             extra['branch'] = 'default'
         files = l[3:]
@@ -218,7 +218,7 @@
         if extra and extra.get("branch") in ("default", ""):
             del extra["branch"]
         if extra:
-            extra = self.encode_extra(extra)
+            extra = encodeextra(extra)
             parseddate = "%s %s" % (parseddate, extra)
         l = [hex(manifest), user, parseddate] + sorted(files) + ["", desc]
         text = "\n".join(l)