JakubAndrysek / MkDoxy

📖 Automatically generates API documentation for your project based on Doxygen comments and code snippets in your markdown files.
https://mkdoxy.kubaandrysek.cz/
MIT License
60 stars 16 forks source link

members of namespace not included in final md if members are refid #84

Open elevin72 opened 5 months ago

elevin72 commented 5 months ago

Hi! I am an encountering an issue with the following code where the enum enum1 and void func3 show on the page associated with group1, but not on the page associated with namespace Foo.

/** @addtogroup group1 The First Group
 *  @{
 */

namespace Foo {
    /** @addtogroup group1 The First Group
     *  @{
     */

    /**
     * @brief an enum inside a namespace
     */
    enum enum1 {
        A,
        B
    };

    /**
     * @brief a class inside a namespace
     */
    class class1 {
        public:
        /**
         * @brief a func1 inside a class inside a namespace
         */
        void func1();
        /**
         * @brief a func2 inside a class inside namespace
         */
        void func2();
    };
    /**
     * @brief a func3 inside a namespace
     */
    void func3(){};

    /** @} */
}

/** @} */

After a little preliminary debugging, here is what I have found:

The xml for the namespace looks like this:

<?xml version='1.0' encoding='UTF-8' standalone='no'?>
<doxygen xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="compound.xsd" version="1.10.0" xml:lang="en-US">
  <compounddef id="namespaceFoo" kind="namespace" language="C++">
    <compoundname>Foo</compoundname>
    <innerclass refid="classFoo_1_1class1" prot="public">Foo::class1</innerclass>
    <sectiondef kind="enum">
      <member refid="group__group1_1gad39a3a7f855ec8cf8715e5d7e6787539" kind="enum"><name>enum1</name></member>
    </sectiondef>
    <sectiondef kind="func">
      <member refid="group__group1_1ga2a68212559a3785d1ee59693366c4a45" kind="function"><name>func3</name></member>
    </sectiondef>
    <briefdescription>
    </briefdescription>
    <detaileddescription>
    </detaileddescription>
    <location file="includes/grouptest.h" line="5" column="1"/>
  </compounddef>
</doxygen>

and in Node._check_for_children() there is no check for members inside of a sectiondef.

In file Node.py, around line 233 I would expect to see something like:

 for member in sectiondef.findall("member"):
    # handle logic of members with a refid...

I am ready to take a stab at this at submit a PR, but I would like to open this issue first to check with @JakubAndrysek to see if that logic was left out for some good reason.

Thanks in advance for any information you may have for me.

JakubAndrysek commented 5 months ago

Hi, I have taken over this part of the project after Doxybook, which might contain some bugs. My main goal was to integrate Doxybook as a MkDocs plugin, and I didn`t modify the core part of the project. Feel free to fix these core issues, and if you know how to help fix other issues, I will be grateful. Thanks, Jacob.