[gobject-introspection: 1/2] giscanner: Fix section matching for documentation




commit de6512b31b614567bf1800406303d1ccfb6d9455
Author: James Westman <flyingpimonster gmail com>
Date:   Mon Sep 7 13:54:42 2020 +0000

    giscanner: Fix section matching for documentation
    
    When writing documentation to the GIR files, GIR tries to match
    classes with their matching SECTION: comment in the source code. Some codebases
    use kebab-case or CamelCase for their section names, but GIR always expects
    them to be flatcase or the matching will fail.
    
    This commit converts all section names to flatcase (by removing "-" and
    converting to lowercase) while they are being parsed, so that they are matched
    properly later on.
    
    Fixes #350.

 giscanner/annotationparser.py                      |  7 ++++-
 .../annotationparser/gi/identifier_section.xml     | 34 ++++++++++++++++++++++
 2 files changed, 40 insertions(+), 1 deletion(-)
---
diff --git a/giscanner/annotationparser.py b/giscanner/annotationparser.py
index f8257206f..c9ff5c2b8 100644
--- a/giscanner/annotationparser.py
+++ b/giscanner/annotationparser.py
@@ -1357,7 +1357,12 @@ class GtkDocCommentBlockParser(object):
                 result = SECTION_RE.match(line)
 
                 if result:
-                    identifier_name = 'SECTION:%s' % (result.group('section_name'), )
+                    # Some projects use kebab-case or CamelCase for section
+                    # names. Convert them all to flat case so we can match
+                    # them easily later on.
+                    identifier_name = 'SECTION:%s' % (result.group('section_name')
+                                                            .replace("-", "")
+                                                            .lower(), )
                     identifier_delimiter = None
                     identifier_fields = None
                     identifier_fields_start = None
diff --git a/tests/scanner/annotationparser/gi/identifier_section.xml 
b/tests/scanner/annotationparser/gi/identifier_section.xml
index fad2b2edb..380ab87bc 100644
--- a/tests/scanner/annotationparser/gi/identifier_section.xml
+++ b/tests/scanner/annotationparser/gi/identifier_section.xml
@@ -329,4 +329,38 @@ returns nothing.</description>
  */</output>
 </test>
 
+
+<test>
+  <!--
+    Section name in different case styles
+    See https://gitlab.gnome.org/GNOME/gobject-introspection/-/issues/350
+  -->
+  <input>/**
+ * SECTION:Meep-App
+ * @short_description: module for gtk-doc unit test
+ *
+ * This file contains non-sense code for the sole purpose of testing the docs.
+ */</input>
+  <parser>
+    <docblock>
+      <identifier>
+        <name>SECTION:meepapp</name>
+      </identifier>
+      <parameters>
+        <parameter>
+          <name>short_description</name>
+          <description>module for gtk-doc unit test</description>
+        </parameter>
+      </parameters>
+      <description>This file contains non-sense code for the sole purpose of testing the docs.</description>
+    </docblock>
+  </parser>
+  <output>/**
+ * SECTION:meepapp
+ * @short_description: module for gtk-doc unit test
+ *
+ * This file contains non-sense code for the sole purpose of testing the docs.
+ */</output>
+</test>
+
 </tests>


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]