2
0
mirror of https://github.com/boostorg/docca.git synced 2026-01-19 04:12:08 +00:00

Show all a member's briefs on the class page:

fix #44, close #46

In particular, include briefdescriptions for members that are
part of a user-defined group.
This commit is contained in:
Evan Lenz
2020-10-17 23:58:32 -07:00
committed by Vinnie Falco
parent 4e46d2bd21
commit a964f809e5
2 changed files with 20 additions and 8 deletions

View File

@@ -13,6 +13,12 @@ is extracted by Doxygen into an intermediate XML representation,
then processed by the XSLT script via Saxon-HE to produce this
[Boost.Quickbook page](https://www.boost.org/doc/libs/1_71_0/libs/beast/doc/html/beast/ref/boost__beast__buffers_cat.html).
## Usage
The following Doxygen configuration settings must be set as indicated:
DISTRIBUTE_GROUP_DOC = YES
## License
Distributed under the Boost Software License, Version 1.0.

View File

@@ -317,9 +317,10 @@
<xsl:variable name="member-nodes" as="element()*">
<xsl:apply-templates mode="member-nodes" select="."/>
</xsl:variable>
<xsl:apply-templates mode="member-row" select="$member-nodes">
<xsl:sort select="d:member-name(.)"/>
</xsl:apply-templates>
<xsl:for-each-group select="$member-nodes" group-by="d:member-name(.)">
<xsl:sort select="current-grouping-key()"/>
<xsl:apply-templates mode="member-row" select="."/>
</xsl:for-each-group>
</xsl:template>
<xsl:template mode="member-nodes" match="innerclass | sectiondef[@kind eq 'public-type']">
@@ -333,7 +334,14 @@
</xsl:template>
<xsl:template mode="member-nodes" match="sectiondef">
<xsl:sequence select="memberdef"/>
<!--
ASSUMPTION (for now): At least one member per section (table) must not be in a user-defined group.
Also, we may need a more robust mapping between a user-defined group's members and the sections
in which they belong. For now, we are using this partial test.
-->
<xsl:sequence select="memberdef,
../sectiondef[@kind eq 'user-defined']/memberdef[(@kind||@prot||@static) =
current()/memberdef/(@kind||@prot||@static)]"/>
</xsl:template>
@@ -350,13 +358,11 @@
</xsl:template>
<!-- Only output a table row for the first instance of each name (ignore overloads) -->
<xsl:template mode="member-row" match="memberdef[name = preceding-sibling::memberdef/name]"/>
<xsl:template mode="member-row" match="*">
<tr>
<td>
<bold>
<ref d:refid="{@d:page-refid}">{d:member-name(.)}</ref>
<ref d:refid="{@d:page-refid}">{current-grouping-key()}</ref>
</bold>
</td>
<td>
@@ -369,7 +375,7 @@
<xsl:apply-templates select="d:referenced-inner-class/compounddef/briefdescription"/>
</xsl:template>
<xsl:template mode="member-description" match="memberdef">
<xsl:variable name="descriptions" select="../memberdef[name eq current()/name]/briefdescription"/>
<xsl:variable name="descriptions" select="current-group()/briefdescription"/>
<!-- Pull in any overload descriptions but only if they vary -->
<xsl:for-each select="distinct-values($descriptions)">
<xsl:apply-templates select="$descriptions[. eq current()][1]"/>