Add short documentation to pkgdraw
[senf.git] / doclib / html-munge.xsl
index 7da6022..17346f7 100644 (file)
@@ -2,6 +2,8 @@
 <xsl:stylesheet version="1.0"\r
   xmlns:xsl="http://www.w3.org/1999/XSL/Transform"\r
   xmlns:str="http://exslt.org/strings"\r
+  xmlns:set="http://exslt.org/sets"\r
+  xmlns:exslt="http://exslt.org/common"\r
   extension-element-prefixes="str">\r
 \r
   <xsl:output \r
@@ -44,7 +46,7 @@
     <xsl:value-of select="substring-after(current(),'@TOPDIR@')"/>\r
   </xsl:template>\r
   \r
-  <!-- Add 'class' attribute to some special paragraphs/lists -->\r
+  <!-- Add 'class' attribute  -->\r
   \r
   <xsl:template name="add-class">\r
     <xsl:param name="class"/>\r
     </xsl:element>\r
   </xsl:template>\r
 \r
+  <!-- Reformat detailed member documentation -->\r
+\r
+  <xsl:template match="table[@class='memname']">\r
+    <xsl:variable name="name1"><xsl:value-of select="str:split(tr/td[@class='memname'],'::')[position()=last()]"/></xsl:variable>\r
+    <xsl:variable name="name2"><xsl:value-of select="str:split(tr/td[@class='memname'],' ')[position()=last()]"/></xsl:variable>\r
+    <xsl:variable name="name"><xsl:value-of select="substring($name1,string-length($name1)-string-length($name2))"/></xsl:variable>\r
+    <xsl:element name="table">\r
+      <xsl:attribute name="class">\r
+        <xsl:text>memname</xsl:text>\r
+        <xsl:if test="contains(tr/td[@class='memname'],'#define')"><xsl:text> macro</xsl:text></xsl:if>\r
+      </xsl:attribute>\r
+      <tr>\r
+        <td class="memtype" colspan="5">\r
+          <xsl:for-each select="tr/td[@class='memname']/*|tr/td[@class='memname']/text()">\r
+            <xsl:choose>\r
+              <xsl:when test="position()=last()">\r
+                <xsl:value-of select="substring(.,1,string-length(.)-string-length($name))"/>\r
+              </xsl:when>\r
+              <xsl:otherwise>\r
+                <xsl:copy-of select="."/>\r
+              </xsl:otherwise>\r
+            </xsl:choose>\r
+          </xsl:for-each>\r
+        </td>\r
+      </tr>\r
+\r
+      <xsl:choose>\r
+        <xsl:when test="tr/td[@class='paramtype']">\r
+          <tr>\r
+            <td class="memname"><xsl:copy-of select="$name"/></td>\r
+            <td class="memparen">(</td>\r
+            <xsl:copy-of select="tr[1]/td[@class='paramtype']"/>\r
+            <xsl:copy-of select="tr[1]/td[@class='paramname']"/>\r
+            <td class="memparen"><xsl:if test="not(tr[td[@class='paramkey']])">)</xsl:if></td>\r
+          </tr>\r
+\r
+          <xsl:for-each select="tr[td[@class='paramkey']]">\r
+            <tr>\r
+              <td class="memname"></td>\r
+              <td class="memparen"></td>\r
+              <xsl:copy-of select="td[@class='paramtype']"/>\r
+              <xsl:copy-of select="td[@class='paramname']"/>\r
+              <td class="memparen"><xsl:if test="position()=last()">)</xsl:if></td>\r
+            </tr>\r
+          </xsl:for-each>\r
+        </xsl:when>\r
+        <xsl:otherwise>\r
+          <tr>\r
+            <td class="memname"><xsl:copy-of select="$name"/></td>\r
+            <td class="memparen"><xsl:if test="tr/td[.='(']">()</xsl:if></td>\r
+            <td class="paramtype"></td>\r
+            <td class="paramname"></td>\r
+            <td class="memparen"></td>\r
+          </tr>\r
+        </xsl:otherwise>\r
+      </xsl:choose>\r
+      <tr>\r
+        <td colspan="5" class="memattrs"><xsl:copy-of select="tr/td[@width='100%']/*|tr/td[@width='100%']/text()"/></td>\r
+      </tr>\r
+    </xsl:element>\r
+  </xsl:template>\r
+\r
+  <!-- no idea, where these &nbsp;'s come frome ... -->\r
+  <xsl:template match="div[@class='memproto']/text()[.='&#160;&#x0a;']">\r
+  </xsl:template>\r
+\r
   <!-- Add grouping to all-members page -->\r
 \r
   <xsl:template match="table[preceding-sibling::h1[1][contains(text(),'Member List')]]">\r
       </xsl:variable>\r
       <xsl:if test="string($public-memfn)">\r
         <tr><td colspan="3"><h2>Public Member Functions</h2></td></tr>\r
-        <xsl:copy-of select="$public-memfn"/>\r
+        <xsl:copy-of select="set:distinct(exslt:node-set($public-memfn)/tr)"/>\r
       </xsl:if>\r
 \r
       <xsl:variable name="public-var">\r
     </xsl:call-template>\r
   </xsl:template>\r
 \r
+  <!-- Break the following lists after each komma -->\r
+\r
   <xsl:template match="p[starts-with(text(),'Inherited by ')]">\r
     <xsl:call-template name="break-comma"/>\r
   </xsl:template>\r
   </xsl:template>\r
 \r
   <!-- Add CSS class to the brief documentation paragraph of the member documentation -->\r
-  <xsl:template match="div[@class='memdoc']/p[1]">\r
+  <xsl:template match="div[@class='memdoc']/p[1][not(contains(.,'Definition at line'))]">\r
     <xsl:call-template name="add-class">\r
       <xsl:with-param name="class">memtitle</xsl:with-param>\r
     </xsl:call-template>\r