[Zope3-checkins] CVS: Products3/z3checkins - message.py:1.2

Marius Gedminas mgedmin@codeworks.lt
Thu, 3 Apr 2003 04:18:17 -0500


Update of /cvs-repository/Products3/z3checkins
In directory cvs.zope.org:/tmp/cvs-serv27939

Modified Files:
	message.py 
Log Message:
Handle CVS import messages, messages without signatures, and messages with
DOS line endings.


=== Products3/z3checkins/message.py 1.1.1.1 => 1.2 ===
--- Products3/z3checkins/message.py:1.1.1.1	Thu Apr  3 03:19:59 2003
+++ Products3/z3checkins/message.py	Thu Apr  3 04:17:46 2003
@@ -153,7 +153,7 @@
         in_log_msg = 0
         for line in lines:
             if in_log_msg:
-                if line.startswith('=== '):
+                if line.startswith('=== ') or line == "Status:\n":
                     break
                 else:
                     log_message.append(line)
@@ -208,20 +208,27 @@
     def body(self):
         """Colorizes checkin message body."""
 
-        text = self.context.body.replace('&', '&') \
+        text = self.context.body.replace('\r', '')\
+                                .replace('&', '&') \
                                 .replace('<', '&lt;') \
                                 .replace('>', '&gt;') \
                                 .replace('"', '&quot;')
-        m = re.match('(?s)(.*?\nLog [mM]essage:\n)(.*?\n)\n*(===.*\n)?'
-                     '(_______________________________________________.*)\Z',
+        m = re.match('(?s)(.*?\nLog [mM]essage:\n)(.*?\n)\n*(Status:\n\n.*?)?'
+                     '(===.*?)?'
+                     '(\n_______________________________________________.*)?\Z',
                      text)
         if not m:
-            return self.context.body
-        intro, log, diff, sig = m.groups()
+            return '<pre>%s</pre>' % text
+        intro, log, import_status, diff, sig = m.groups()
 
         log = '<p>%s</p>' % '</p><p>'.join(log.splitlines())
 
+        if import_status is None:
+            import_status = ''
+
         # Unified diff
+        if diff is None:
+            diff = ''
         def colorize(style):
             return r'<div class="%s">\1</div>' % style
         diff = re.sub(r'(?m)^(===.*)$', colorize("file"), diff)
@@ -234,6 +241,10 @@
         # Postprocess for Mozilla
         diff = re.sub('</div>\n', '\n</div>', diff)
 
-        return '<pre>%s</pre><div class="log">%s</div><pre>%s' \
-               '<div class="signature">%s</div></pre>' \
-               % (intro, log, diff, sig)
+        if sig is None:
+            sig = ''
+        else:
+            sig = '<div class="signature">%s</div>' % sig
+
+        return '<pre>%s</pre><div class="log">%s</div><pre>%s%s%s</pre>' \
+               % (intro, log, import_status, diff, sig)