Add XSLT postprocessing of HTML files to fix browser problems
g0dil [Thu, 25 Jan 2007 16:12:14 +0000 (16:12 +0000)]
git-svn-id: https://svn.berlios.de/svnroot/repos/senf/trunk@185 270642c3-0616-0410-b53a-bc976706d245

SConstruct
Socket/ClientSocketHandle.ct
Socket/ClientSocketHandle.cti
Socket/ClientSocketHandle.hh
Socket/SocketPolicy.ct
Socket/SocketPolicy.hh
Socket/SocketPolicy.ih
doclib/html-munge.xsl [new file with mode: 0644]
doclib/senf.css
senfscons/SENFSCons.py

index 2bd5c45..7946269 100644 (file)
@@ -14,6 +14,7 @@ env.Append(
    CPPPATH = [ '#' ],
    LIBS = [ 'iberty' ],
    DOXY_XREF_TYPES = [ 'bug', 'fixme', 'todo', 'idea' ],
+   DOXY_HTML_XSL = '#/doclib/html-munge.xsl',
 )
 
 import datetime
index 0c6b61b..3f5112f 100644 (file)
@@ -20,7 +20,9 @@
 // Free Software Foundation, Inc.,
 // 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
 
-// Definition of non-inline template functions
+/** \file
+    \brief senf::ClientSocketHandle non-inline template implementation
+ */
 
 //#include "ClientSocketHandle.ih"
 
index c6a9348..669aa38 100644 (file)
@@ -20,7 +20,9 @@
 // Free Software Foundation, Inc.,
 // 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
 
-// Definition of inline template functions
+/** \file
+    \brief senf::ClientSocketHandle inline template implementation
+ */
 
 //#include "ClientSocketHandle.ih"
 
index a1f3b92..96267f5 100644 (file)
 // Free Software Foundation, Inc.,
 // 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
 
+/** \file
+    \brief senf::ClientSocketHandle public header
+ */
+
 #ifndef HH_ClientSocketHandle_
 #define HH_ClientSocketHandle_ 1
 
@@ -37,7 +41,7 @@ namespace senf {
     
     template <class Policy> class ServerSocketHandle;
 
-    /** \brief
+    /** \brief Generic SocketHandle with client interface
        
        \todo Move all not template-parameter dependent code into a
        non-template base class
index 3f07f25..d8b2f22 100644 (file)
@@ -20,7 +20,9 @@
 // Free Software Foundation, Inc.,
 // 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
 
-// Definition of non-inline template functions
+/** \file 
+    \brief Policy Framework non-inline template implemenation
+ */
 
 #include "SocketPolicy.ih"
 
index 297a469..eb453af 100644 (file)
@@ -21,7 +21,7 @@
 // 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
 
 /** \file
-    \brief SocketPolicy public header
+    \brief Policy Framework public header
 
     \todo We should probably remove BufferingPolicy from the
     interface, it does not make much sense (how did I come to include
index fac273a..0e2b58f 100644 (file)
 // Free Software Foundation, Inc.,
 // 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
 
+/** \file
+    \brief Policy Framework internal header
+ */
+
 #ifndef IH_SocketPolicy_
 #define IH_SocketPolicy_ 1
 
diff --git a/doclib/html-munge.xsl b/doclib/html-munge.xsl
new file mode 100644 (file)
index 0000000..241bc8b
--- /dev/null
@@ -0,0 +1,54 @@
+<?xml version="1.0" encoding="utf-8"?>\r
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"\r
+                version="1.0">\r
+\r
+  <xsl:output method="html" encoding="html" />\r
+\r
+  <xsl:template match="/">\r
+    <html>\r
+      <body bgcolor="#FFFFFF">\r
+        <xsl:apply-templates/>\r
+      </body>\r
+    </html>\r
+  </xsl:template>\r
+\r
+  <xsl:template match="dl[dt/b/a/text()='Bug:']">\r
+    <xsl:copy>\r
+      <xsl:for-each select="@*"><xsl:copy/></xsl:for-each>\r
+      <xsl:attribute name="class">xref-bug</xsl:attribute>\r
+      <xsl:apply-templates/>\r
+    </xsl:copy>\r
+  </xsl:template>\r
+\r
+  <xsl:template match="dl[dt/b/a/text()='Fixme:']">\r
+    <xsl:copy>\r
+      <xsl:for-each select="@*"><xsl:copy/></xsl:for-each>\r
+      <xsl:attribute name="class">xref-fixme</xsl:attribute>\r
+      <xsl:apply-templates/>\r
+    </xsl:copy>\r
+  </xsl:template>\r
+\r
+  <xsl:template match="dl[dt/b/a/text()='Todo:']">\r
+    <xsl:copy>\r
+      <xsl:for-each select="@*"><xsl:copy/></xsl:for-each>\r
+      <xsl:attribute name="class">xref-todo</xsl:attribute>\r
+      <xsl:apply-templates/>\r
+    </xsl:copy>\r
+  </xsl:template>\r
+\r
+  <xsl:template match="dl[dt/b/a/text()='Idea:']">\r
+    <xsl:copy>\r
+      <xsl:for-each select="@*"><xsl:copy/></xsl:for-each>\r
+      <xsl:attribute name="class">xref-idea</xsl:attribute>\r
+      <xsl:apply-templates/>\r
+    </xsl:copy>\r
+  </xsl:template>\r
+\r
+  <xsl:template match="*">\r
+    <xsl:copy>\r
+      <xsl:for-each select="@*"><xsl:copy/></xsl:for-each>\r
+      <xsl:apply-templates/>\r
+    </xsl:copy>\r
+  </xsl:template>\r
+\r
+</xsl:stylesheet>\r
index f5f2de4..ddfeff0 100644 (file)
@@ -175,25 +175,24 @@ dl.bug, dl.fixme, dl.todo, dl.idea {
        padding: 0 10px;
 }
 
-dl:contains("Bug:"), dl:contains("Fix:"), dl:contains("Todo:"), dl:contains("Idea:") { 
+dl.xref-bug, dl.xref-fix, dl.xref-todo, dl.xref-idea { 
        border: 1px solid #CC8888;
-       padding: 4px;
+       padding: 2px 3px;
+       margin: 4px 0;
        background-color: #FFEEEE;
        color: #666666;
-       font-size: 6px;
-       line-height: 6px;
+       font-size: 9px;
        overflow: hidden;
-       height: 6px;
 }
 
-dl:contains("Bug:"):hover, dl:contains("Fix:"):hover, 
-dl:contains("Todo:"):hover, dl:contains("Idea:"):hover { 
-       line-height: inherit;
-       font-size: inherit;
-       height: auto;
+dl.xref-bug dt, dl.xref-fix dt, dl.xref-todo dt, dl.xref-idea dt,
+dl.xref-bug dd, dl.xref-fix dd, dl.xref-todo dd, dl.xref-idea dd { 
+       display: inline;
+       margin: 0;
+       padding: 0;
 }
 
-dl:contains("Bug:") a, dl:contains("Fix:") a, dl:contains("Todo:") a, dl:contains("Idea:") a { 
+dl.xref-bug a, dl.xref-fix a, dl.xref-todo a, dl.xref-idea a { 
        color: #6666FF;
 }
 
@@ -202,7 +201,7 @@ dl.fixme {
        background-color: #FFFFDD;
 }
 
-dl:contains("Fix:") { 
+dl.xref-fix { 
        border-color: #CCCC88;
        background-color: #FFFFEE;
 }
@@ -212,7 +211,7 @@ dl.todo {
        background-color: #DDFFDD;
 }
 
-dl:contains("Todo:") { 
+dl.xref-todo { 
        border-color: #88CC88;
        background-color: #EEFFEE;
 }
@@ -222,7 +221,7 @@ dl.idea {
        background-color: #EEEEEE;
 }
 
-dl:contains("Idea:") { 
+dl.xref-idea { 
        border-color:  #CCCCCC;
        background-color: #F8F8F8;
 }
index d2e0c48..a9961d6 100644 (file)
@@ -151,11 +151,13 @@ def Doxygen(env, doxyfile = "Doxyfile", extra_sources = []):
     #        ||| WITHIN THE DOXYGEN BUILDER
     docs = env.Doxygen(doxyfile)[:]
     xmlnode = None
+    htmlnode = None
     tagnode = None
     for doc in docs:
         if isinstance(doc,SCons.Node.FS.Dir): continue
         if doc.name == 'xml.stamp' : xmlnode = doc
-        if os.path.splitext(doc.name)[1] == '.stamp' : continue # file stamp
+        if doc.name == 'html.stamp' : htmlnode = doc
+        if os.path.splitext(doc.name)[1] == '.stamp' : continue # ignore other file stamps
         # otherwise it must be the tag file
         tagnode = doc
 
@@ -164,10 +166,21 @@ def Doxygen(env, doxyfile = "Doxyfile", extra_sources = []):
         # references
         env.AddPostAction(
             docs,
-            env.Action("xsltproc -o %(target)s.temp %(template)s %(target)s && mv %(target)s.temp %(target)s"
+            env.Action("xsltproc --nonet -o %(target)s.temp %(template)s %(target)s && mv %(target)s.temp %(target)s"
                        % { 'target': tagnode.abspath,
                            'template': os.path.join(basedir,"tagmunge.xsl") }))
 
+    if htmlnode and env.get('DOXY_HTML_XSL'):
+        xslfile = env.File(env['DOXY_HTML_XSL'])
+        env.AddPostAction(
+            docs,
+            env.Action(("for html in %s/*.html; do " +
+                        "xsltproc --nonet --html -o $${html}.new %s $${html} && mv $${html}.new $${html}; " +
+                        "done")
+                       % (htmlnode.dir.abspath, xslfile.abspath)))
+        for doc in docs:
+            env.Depends(doc,xslfile)
+
     if xmlnode:
         xrefs = []
         for type in env.get("DOXY_XREF_TYPES",[ "bug", "todo" ]):