Rev 4: More correct refactoring. in http://bzr.arbash-meinel.com/plugins/kndx_to_dot

John Arbash Meinel john at arbash-meinel.com
Tue Apr 10 22:36:57 BST 2007


At http://bzr.arbash-meinel.com/plugins/kndx_to_dot

------------------------------------------------------------
revno: 4
revision-id: john at arbash-meinel.com-20070410213652-y9u56him1kmu8ksh
parent: john at arbash-meinel.com-20070410213503-9gnbqblwne0g6c4m
committer: John Arbash Meinel <john at arbash-meinel.com>
branch nick: kndx_to_dot
timestamp: Tue 2007-04-10 16:36:52 -0500
message:
  More correct refactoring.
modified:
  __init__.py                    __init__.py-20070410212739-0uwundx7uoho7f6n-1
-------------- next part --------------
=== modified file '__init__.py'
--- a/__init__.py	2007-04-10 21:35:03 +0000
+++ b/__init__.py	2007-04-10 21:36:52 +0000
@@ -38,12 +38,6 @@
     '.bzr/repository/inventory'.
     """
 
-    _revision_id_re = lazy_regex.lazy_compile(
-        r'(?P<user>.+)'
-        r'@.*'
-        r'-20(?P<date>\d{6})(?P<time>\d{6})-'
-        r'.*(?P<tail>[a-z0-9]{5})$')
-
     takes_args = ['path']
     takes_options = [option.Option('start', type=str, argname='revid',
                            help='Don\'t include revision before this one.'),
@@ -74,48 +68,52 @@
             except ValueError:
                 versions = versions[versions.index(start):]
 
-        self.generate_dot(kndx, short, version_idxs, versions, self.outf)
-
-    def make_short_name(self, version_idxs, version):
-        """Convert a revision id into a shorter name.
-
-        :param version_idxs: A dict mapping versions => offset
-        :param version: The version to shorten.
-        """
-        idx = version_idxs[version]
-        m = self._revision_id_re.match(version)
-        if m:
-            return "%s %s-%s-%s" % (idx, m.group('user'),
-                                    m.group('date'), m.group('tail'))
-        else:
-            return "%s %s" % (idx, version)
-
-    def generate_dot(self, kndx, short, version_idxs, versions, output):
-        self.outf.write('digraph T {\n'
-                        '  node [shape=box]\n'
-                       )
-        for version in versions:
-            if short:
-                sversion = self.make_short_name(version_idxs, version)
-            else:
-                sversion = version
-            parents = kndx.get_parents(version)
-            if short:
-                sparents = [self.make_short_name(version_idxs, p)
-                            for p in parents]
-            else:
-                sparents = parents
-            if not parents:
-                output.write('  "%s"\n' % (sversion,))
-            else:
-                for sparent in sparents:
-                    output.write('  "%s" -> "%s"\n' % (sparent, sversion))
-            # elif len(parents) == 1:
-            #     self.outf.write('  "%s" -> "%s"\n' % (sversion, sparents[0]))
-            # else:
-            #     sparents = ' '.join('"%s"' % p for p in sparents)
-            #     self.outf.write('  "%s" -> {%s}\n' % (sversion, sparents))
-        output.write('}\n')
+        generate_dot(kndx, short, version_idxs, versions, self.outf)
+
+
+_short_revision_id_re = lazy_regex.lazy_compile(
+    r'(?P<user>.+)'
+    r'@.*'
+    r'-20(?P<date>\d{6})(?P<time>\d{6})-'
+    r'.*(?P<tail>[a-z0-9]{5})$')
+
+
+def make_short_name(version_idxs, version):
+    """Convert a revision id into a shorter name.
+
+    :param version_idxs: A dict mapping versions => offset
+    :param version: The version to shorten.
+    """
+    idx = version_idxs[version]
+    m = _short_revision_id_re.match(version)
+    if m:
+        return "%s %s-%s-%s" % (idx, m.group('user'),
+                                m.group('date'), m.group('tail'))
+    else:
+        return "%s %s" % (idx, version)
+
+
+def generate_dot(kndx, short, version_idxs, versions, output):
+    output.write('digraph T {\n'
+                 '  node [shape=box]\n'
+                )
+    for version in versions:
+        if short:
+            sversion = make_short_name(version_idxs, version)
+        else:
+            sversion = version
+        parents = kndx.get_parents(version)
+        if short:
+            sparents = [make_short_name(version_idxs, p)
+                        for p in parents]
+        else:
+            sparents = parents
+        if not parents:
+            output.write('  "%s"\n' % (sversion,))
+        else:
+            for sparent in sparents:
+                output.write('  "%s" -> "%s"\n' % (sparent, sversion))
+    output.write('}\n')
 
 
 commands.register_command(cmd_kndx2dot)



More information about the bazaar-commits mailing list