]> git.ipfire.org Git - thirdparty/libvirt.git/commitdiff
apibuild: Simplify parseTypeComment()
authorRadostin Stoyanov <rstoyanov1@gmail.com>
Tue, 20 Mar 2018 06:49:02 +0000 (06:49 +0000)
committerDaniel P. Berrangé <berrange@redhat.com>
Tue, 20 Mar 2018 12:13:36 +0000 (12:13 +0000)
Improve readability and reduce complexity the method
parseTypeComment().

Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>
Signed-off-by: Radostin Stoyanov <rstoyanov1@gmail.com>
docs/apibuild.py

index d5707d5d1cc1b17f45096774b00900b77b8746e2..06d556baea6c02c7821e098951a1722b3a4a5c9f 100755 (executable)
@@ -756,48 +756,38 @@ class CParser:
     #
     # Parse a comment block associate to a typedef
     #
-    def parseTypeComment(self, name, quiet=0):
+    def parseTypeComment(self, name, quiet=False):
         if name[0:2] == '__':
-            quiet = 1
-
-        args = []
-        desc = ""
+            quiet = True
 
         if self.comment is None:
             if not quiet:
                 self.warning("Missing comment for type %s" % (name))
-            return((args, desc))
-        if self.comment[0] != '*':
+            return None
+        if not self.comment.startswith('*'):
             if not quiet:
                 self.warning("Missing * in type comment for %s" % (name))
-            return((args, desc))
+            return None
+
         lines = self.comment.split('\n')
-        if lines[0] == '*':
-            del lines[0]
+        # Remove lines that contain only single asterisk
+        lines[:] = [line for line in lines if line.strip() != '*']
+
         if lines[0] != "* %s:" % (name):
             if not quiet:
                 self.warning("Misformatted type comment for %s" % (name))
                 self.warning("  Expecting '* %s:' got '%s'" % (name, lines[0]))
-            return((args, desc))
+            return None
         del lines[0]
-        while len(lines) > 0 and lines[0] == '*':
-            del lines[0]
-        desc = ""
-        while len(lines) > 0:
-            l = lines[0]
-            while len(l) > 0 and l[0] == '*':
-                l = l[1:]
-            l = l.strip()
-            desc = desc + " " + l
-            del lines[0]
 
-        desc = desc.strip()
+        # Concatenate all remaining lines by striping leading asterisks
+        desc = " ".join([line.lstrip("*").strip() for line in lines]).strip()
 
-        if quiet == 0:
-            if desc == "":
-                self.warning("Type comment for %s lack description of the macro" % (name))
+        if not (quiet or desc):
+            self.warning("Type comment for %s lack description of the macro"
+                         % (name))
 
-        return(desc)
+        return desc
     #
     # Parse a comment block associate to a macro
     #