im.pidgin.pidgin: 5e03fe2d3a1f4d81543aeffc399cf6d05210e16b
resiak at soc.pidgin.im
resiak at soc.pidgin.im
Sat Oct 13 11:50:36 EDT 2007
-----------------------------------------------------------------
Revision: 5e03fe2d3a1f4d81543aeffc399cf6d05210e16b
Ancestor: e9e74094baa29c6f5589385507221a2502b817fb
Author: resiak at soc.pidgin.im
Date: 2007-10-13T15:44:43
Branch: im.pidgin.pidgin
Added files:
doxy2devhelp.xsl
Modified files:
Doxyfile.in Makefile.am configure.ac
ChangeLog:
Add some xsl magic to generate a .devhelp index from doxygen's XML output,
allowing the documentation to be viewed in Devhelp. It's not perfect ---
there are some broken links and the transformation is a bit fragile --- but
works well enough to be useful.
-------------- next part --------------
============================================================
--- doxy2devhelp.xsl ae6cff10f0176adce6f8fe423afd39dc2646000f
+++ doxy2devhelp.xsl ae6cff10f0176adce6f8fe423afd39dc2646000f
@@ -0,0 +1,98 @@
+<xsl:stylesheet
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ xmlns:fo="http://www.w3.org/1999/XSL/Format"
+ version="1.0">
+
+<!-- Based on http://bur.st/~eleusis/devhelp/doxy2devhelp.xsl
+ (http://bur.st/~eleusis/devhelp/README)
+ which is based on http://bugzilla.gnome.org/show_bug.cgi?id=122450
+-->
+
+<xsl:output method="xml" version="1.0" indent="yes"/>
+
+<xsl:param name="reference_prefix"></xsl:param>
+
+<xsl:template match="/">
+ <book title="Pidgin Documentation"
+ name="pidgin"
+ link="{$reference_prefix}main.html">
+ <chapters>
+ <sub name="Modules" link="{$reference_prefix}modules.html">
+ <xsl:apply-templates select="doxygenindex/compound[@kind='group']">
+ <xsl:sort select="."/>
+ </xsl:apply-templates>
+ </sub>
+ <!-- annotated.html has the short descriptions beside each struct. is
+ that more useful than being grouped alphabetically?
+ -->
+ <sub name="Structs" link="{$reference_prefix}classes.html">
+ <xsl:apply-templates select="doxygenindex/compound[@kind='struct']">
+ <xsl:sort select="."/>
+ </xsl:apply-templates>
+ </sub>
+ <!-- This is redundant given Modules -->
+ <!--
+ <sub name="Directories" link="{$reference_prefix}dirs.html">
+ <xsl:apply-templates select="doxygenindex/compound[@kind='dir']">
+ <xsl:sort select="."/>
+ </xsl:apply-templates>
+ </sub>
+ -->
+ <!-- FIXME: Some files show up here but are broken links; mostly
+ files that are under pages...
+ -->
+ <sub name="Files" link="{$reference_prefix}files.html">
+ <xsl:apply-templates select="doxygenindex/compound[@kind='file']">
+ <xsl:sort select="."/>
+ </xsl:apply-templates>
+ </sub>
+ <sub name="Signals, HOWTOs, Other" link="{$reference_prefix}pages.html">
+ <xsl:apply-templates select="doxygenindex/compound[@kind='page']">
+ <xsl:sort select="."/>
+ </xsl:apply-templates>
+ </sub>
+ </chapters>
+
+ <functions>
+ <!-- @todo: maybe select only the real functions, ie those with kind=="function"? -->
+ <xsl:apply-templates select="doxygenindex/compound/member" mode="as-function"/>
+ </functions>
+ </book>
+</xsl:template>
+
+<xsl:template match="compound">
+ <xsl:param name="name"><xsl:value-of select="name"/></xsl:param>
+ <xsl:param name="link"><xsl:value-of select="@refid"/>.html</xsl:param>
+ <sub name="{$name}" link="{$reference_prefix}{$link}">
+ <xsl:apply-templates select="member" mode="as-sub">
+ <xsl:sort select="."/>
+ </xsl:apply-templates>
+ </sub>
+</xsl:template>
+
+<xsl:template match="member" mode="as-function">
+ <!--
+ <function name="atk_set_value" link="atk-atkvalue.html#ATK-SET-VALUE"/>
+ -->
+ <xsl:param name="name"><xsl:value-of select="name"/></xsl:param>
+ <!-- Link is refid attribute of parent element + "#" + diff between refid of parent and own refid -->
+ <xsl:param name="refid_parent"><xsl:value-of select="parent::node()/@refid"/></xsl:param>
+ <xsl:param name="own_refid"><xsl:value-of select="@refid"/></xsl:param>
+ <xsl:param name="offset"><xsl:value-of select="string-length($refid_parent) + 3"/></xsl:param>
+ <xsl:param name="ref_diff"><xsl:value-of select="substring($own_refid, $offset, 33)"/></xsl:param>
+ <xsl:param name="link"><xsl:value-of select="$refid_parent"/>.html#<xsl:value-of select="$ref_diff"/></xsl:param>
+ <function name="{$name}" link="{$reference_prefix}{$link}"/>
+</xsl:template>
+
+<xsl:template match="member" mode="as-sub">
+ <xsl:param name="name"><xsl:value-of select="name"/></xsl:param>
+ <!-- Link is refid attribute of parent element + "#" + diff between refid of parent and own refid -->
+ <xsl:param name="refid_parent"><xsl:value-of select="parent::node()/@refid"/></xsl:param>
+ <xsl:param name="own_refid"><xsl:value-of select="@refid"/></xsl:param>
+ <xsl:param name="offset"><xsl:value-of select="string-length($refid_parent) + 3"/></xsl:param>
+ <xsl:param name="ref_diff"><xsl:value-of select="substring($own_refid, $offset, 33)"/></xsl:param>
+ <xsl:param name="link"><xsl:value-of select="$refid_parent"/>.html#<xsl:value-of select="$ref_diff"/></xsl:param>
+ <sub name="{$name}" link="{$reference_prefix}{$link}"/>
+</xsl:template>
+
+</xsl:stylesheet>
============================================================
--- Doxyfile.in 10624f0c7167c34572c4ff4ecc0853b7c11b4be7
+++ Doxyfile.in 57f73b9e77ae9c81810c55e7f78dc82bc9355a09
@@ -858,7 +858,7 @@ MAN_LINKS = NO
# feature is still experimental and incomplete at the
# moment.
-GENERATE_XML = NO
+GENERATE_XML = YES
# The XML_OUTPUT tag is used to specify where the XML pages will be put.
# If a relative path is entered the value of OUTPUT_DIRECTORY will be
============================================================
--- Makefile.am 60eef9c2a5365e3a2ce34c09f8080815586bb302
+++ Makefile.am 051387f74acbee5c1922e4a53b6ac026285a93c1
@@ -48,7 +48,14 @@ if HAVE_DOXYGEN
if HAVE_DOXYGEN
@echo "Running doxygen..."
@doxygen
+if HAVE_XSLTPROC
+ @echo "Generating devhelp index..."
+ @xsltproc doxy2devhelp.xsl doc/xml/index.xml > doc/html/pidgin.devhelp
+ @echo "(Symlink doc/html to ~/.local/share/gtk-doc/html/pidgin to make devhelp see the documentation)"
else
+ @echo "Not generating devhelp index: xsltproc was not found by configure"
+endif
+else
@echo "doxygen was not found during configure. Aborting."
@echo;
endif
============================================================
--- configure.ac b393004529bdd1b9197ef43199af7d0369bbe3c9
+++ configure.ac 9abf4a5af09288a29154f4806a42dc238de60c38
@@ -2101,6 +2101,10 @@ AC_ARG_ENABLE(dot,
[AC_HELP_STRING([--enable-dot],
[enable graphs in doxygen via 'dot'])],
enable_dot="$enableval", enable_dot="yes")
+AC_ARG_ENABLE(devhelp,
+ [AC_HELP_STRING([--enable-devhelp],
+ [enable building index for devhelp documentation browser])],
+ enable_devhelp="$enableval", enable_devhelp="yes")
if test "x$enable_doxygen" = xyes; then
AC_CHECK_PROG(DOXYGEN, doxygen, true, false)
@@ -2120,14 +2124,28 @@ if test "x$enable_doxygen" = xyes; then
AC_DEFINE_UNQUOTED(HAVE_DOT, 1, [whether or not we have dot])
fi
fi
+
+ if test "x$enable_devhelp" = "xyes"; then
+ AC_CHECK_PROG(XSLTPROC, xsltproc, true, false)
+
+ if test $XSLTPROC = false; then
+ enable_devhelp="no";
+ AC_MSG_WARN([*** xsltproc not found; devhelp index will not be created])
+ else
+ AC_DEFINE_UNQUOTED(HAVE_XSLTPROC, 1, [whether or not we have xsltproc for devhelp index])
+ fi
+ fi
fi
else
enable_dot="no"
+ enable_devhelp="no"
fi
AC_SUBST(enable_doxygen)
AC_SUBST(enable_dot)
+AC_SUBST(enable_devhelp)
AM_CONDITIONAL(HAVE_DOXYGEN, test "x$enable_doxygen" = "xyes")
+AM_CONDITIONAL(HAVE_XSLTPROC, test "x$enable_devhelp" = "xyes")
AC_ARG_ENABLE(debug, [AC_HELP_STRING([--enable-debug],
[compile with debugging support])], , enable_debug=no)
More information about the Commits
mailing list