aboutsummaryrefslogtreecommitdiffstats
path: root/lib/erl_docgen/priv/xsl/db_html.xsl
diff options
context:
space:
mode:
authorLars Thorsen <[email protected]>2017-04-12 08:24:56 +0200
committerLars Thorsen <[email protected]>2017-04-27 14:37:40 +0200
commitd1e80ea77af33307fcb672d7c5aa386172c8a789 (patch)
tree9ac9e9cb18fd986f4bb88f309bbcbe2d833b60b9 /lib/erl_docgen/priv/xsl/db_html.xsl
parent74149d797864cb2de1b4d2b58292d27a4f7895ae (diff)
downloadotp-d1e80ea77af33307fcb672d7c5aa386172c8a789.tar.gz
otp-d1e80ea77af33307fcb672d7c5aa386172c8a789.tar.bz2
otp-d1e80ea77af33307fcb672d7c5aa386172c8a789.zip
[erl_docgen] Update the reference manual function name sort
The function for sorting the table of contents is updated to handle reference manuals with C functions.
Diffstat (limited to 'lib/erl_docgen/priv/xsl/db_html.xsl')
-rw-r--r--lib/erl_docgen/priv/xsl/db_html.xsl23
1 files changed, 17 insertions, 6 deletions
diff --git a/lib/erl_docgen/priv/xsl/db_html.xsl b/lib/erl_docgen/priv/xsl/db_html.xsl
index 4c7df1d1a0..6eafa2a165 100644
--- a/lib/erl_docgen/priv/xsl/db_html.xsl
+++ b/lib/erl_docgen/priv/xsl/db_html.xsl
@@ -66,6 +66,10 @@
Additionally, callbacks may be included, as in gen_server.xml:
<name>Module:handle_call(Request, From, State) -> Result</name>
+ For C reference pages the name tag has a substructure where the nametext tag
+ is used in the sort, as in erl_nif.xml
+ <name><ret>void *</ret><nametext>enif_alloc(size_t size)</nametext></name>
+
So first, get the name from either the attribute or the element value.
Then, reverse the case of the first character. This is because xsltproc, used for processing,
orders uppercase before lowercase (even when the 'case-order="lower-first"' option
@@ -82,12 +86,19 @@
<xsl:variable name="base">
<xsl:choose>
- <xsl:when test="string-length($elem/@name) > 0">
- <xsl:value-of select="$elem/@name"/>
- </xsl:when>
- <xsl:otherwise>
- <xsl:value-of select="$elem"/>
- </xsl:otherwise>
+ <xsl:when test="ancestor::cref">
+ <xsl:value-of select="$elem/nametext"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:choose>
+ <xsl:when test="string-length($elem/@name) > 0">
+ <xsl:value-of select="$elem/@name"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$elem"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:otherwise>
</xsl:choose>
</xsl:variable>