Author: ltheussl
Date: Thu Jun  4 08:17:02 2009
New Revision: 781678

URL: http://svn.apache.org/viewvc?rev=781678&view=rev
Log:
[DOXIA-184] Fix figure and table captions

Modified:
    
maven/doxia/doxia/trunk/doxia-modules/doxia-module-docbook-simple/src/main/java/org/apache/maven/doxia/module/docbook/DocBookParser.java

Modified: 
maven/doxia/doxia/trunk/doxia-modules/doxia-module-docbook-simple/src/main/java/org/apache/maven/doxia/module/docbook/DocBookParser.java
URL: 
http://svn.apache.org/viewvc/maven/doxia/doxia/trunk/doxia-modules/doxia-module-docbook-simple/src/main/java/org/apache/maven/doxia/module/docbook/DocBookParser.java?rev=781678&r1=781677&r2=781678&view=diff
==============================================================================
--- 
maven/doxia/doxia/trunk/doxia-modules/doxia-module-docbook-simple/src/main/java/org/apache/maven/doxia/module/docbook/DocBookParser.java
 (original)
+++ 
maven/doxia/doxia/trunk/doxia-modules/doxia-module-docbook-simple/src/main/java/org/apache/maven/doxia/module/docbook/DocBookParser.java
 Thu Jun  4 08:17:02 2009
@@ -126,7 +126,7 @@
 
         if ( HIER_ELEMENTS.contains( parser.getName() ) )
         {
-            handleHierarchyElements( sink );
+            handleHierarchyElements( sink, parser );
         }
         else if ( parser.getName().equals( 
SimplifiedDocbookMarkup.ITEMIZEDLIST_TAG.toString() ) )
         {
@@ -192,10 +192,6 @@
         {
             sink.paragraph();
         }
-        else if ( parser.getName().equals( 
SimplifiedDocbookMarkup.TITLE_TAG.toString() ) )
-        {
-            sink.bold();
-        }
         else if ( VERBATIM_ELEMENTS.contains( parser.getName() ) )
         {
             sink.verbatim( SinkEventAttributeSet.BOXED );
@@ -230,7 +226,7 @@
         }
         else if ( parser.getName().equals( 
SimplifiedDocbookMarkup.TITLE_TAG.toString() ) )
         {
-            handleTitleStart( parser, sink );
+            handleTitleStart( sink );
         }
         else if ( parser.getName().equals( 
SimplifiedDocbookMarkup.CORPAUTHOR_TAG.toString() ) )
         {
@@ -256,6 +252,10 @@
         {
             handleXrefStart( parser, sink );
         }
+        else if ( parser.getName().equals( 
SimplifiedDocbookMarkup.ARTICLEINFO_TAG.toString() ) )
+        {
+            parent.push( parser.getName() );
+        }
         else
         {
             handleUnknown( parser, sink, HtmlMarkup.TAG_TYPE_START );
@@ -278,6 +278,7 @@
             else
             {
                 sink.section_( level );
+                parent.pop();
             }
             //decrease the nesting level
             level--;
@@ -358,11 +359,6 @@
         {
             sink.paragraph_();
         }
-        else if ( parser.getName().equals( 
SimplifiedDocbookMarkup.TITLE_TAG.toString() ) )
-        {
-            sink.text( ". " ); //Inline Running head
-            sink.bold_();
-        }
         else if ( VERBATIM_ELEMENTS.contains( parser.getName() ) )
         {
             sink.verbatim_();
@@ -402,23 +398,7 @@
         }
         else if ( parser.getName().equals( 
SimplifiedDocbookMarkup.TITLE_TAG.toString() ) )
         {
-            if ( parser.getName().equals( 
SimplifiedDocbookMarkup.FIGURE_TAG.toString() ) )
-            {
-                sink.figureCaption_();
-            }
-            else if ( parser.getName().equals( 
SimplifiedDocbookMarkup.TABLE_TAG.toString() )
-                || parser.getName().equals( 
SimplifiedDocbookMarkup.INFORMALTABLE_TAG.toString() ) )
-            {
-                sink.tableCaption_();
-            }
-            else if ( level == 0 )
-            {
-                sink.title_();
-            }
-            else
-            {
-                sink.sectionTitle_( level );
-            }
+            handleTitleEnd( sink );
         }
         else if ( parser.getName().equals( 
SimplifiedDocbookMarkup.CORPAUTHOR_TAG.toString() ) )
         {
@@ -437,6 +417,10 @@
                 sink.link_();
             }
         }
+        else if ( parser.getName().equals( 
SimplifiedDocbookMarkup.ARTICLEINFO_TAG.toString() ) )
+        {
+            parent.pop();
+        }
     }
 
     /** {...@inheritdoc} */
@@ -542,7 +526,7 @@
     }
 
     //If the element introduces a new level of hierarchy, raise the stack
-    private void handleHierarchyElements( Sink sink )
+    private void handleHierarchyElements( Sink sink, XmlPullParser parser )
     {
         //increase the nesting level
         level++;
@@ -555,6 +539,7 @@
         else
         {
             sink.section( level, null );
+            parent.push( parser.getName() );
         }
     }
 
@@ -652,25 +637,51 @@
         parent.push( parser.getName() );
     }
 
-    private void handleTitleStart( XmlPullParser parser, Sink sink )
+    private void handleTitleStart( Sink sink )
     {
-        if ( parser.getName().equals( 
SimplifiedDocbookMarkup.FIGURE_TAG.toString() ) )
+        // TODO: title in abstract, authorblurb, bibliography, bibliodiv, 
bibliomset, appendix
+        if ( isParent( SimplifiedDocbookMarkup.FIGURE_TAG.toString() ) )
         {
             sink.figureCaption();
         }
-        else if ( parser.getName().equals( 
SimplifiedDocbookMarkup.TABLE_TAG.toString() )
-                || parser.getName().equals( 
SimplifiedDocbookMarkup.INFORMALTABLE_TAG.toString() ) )
+        else if ( isParent( SimplifiedDocbookMarkup.TABLE_TAG.toString() )
+                || isParent( 
SimplifiedDocbookMarkup.INFORMALTABLE_TAG.toString() ) )
         {
             sink.tableCaption();
         }
-        else if ( level == 0 )
+        else if ( isParent( SimplifiedDocbookMarkup.ARTICLE_TAG.toString() )
+                || isParent( 
SimplifiedDocbookMarkup.ARTICLEINFO_TAG.toString() ) )
         {
             sink.title();
         }
-        else
+        else if ( isParent( SimplifiedDocbookMarkup.SECTION_TAG.toString() ) )
         {
             sink.sectionTitle( level, null );
         }
+        // else ignore
+    }
+
+    private void handleTitleEnd( Sink sink )
+    {
+        if ( isParent( SimplifiedDocbookMarkup.FIGURE_TAG.toString() ) )
+        {
+            sink.figureCaption_();
+        }
+        else if ( isParent( SimplifiedDocbookMarkup.TABLE_TAG.toString() )
+                || isParent( 
SimplifiedDocbookMarkup.INFORMALTABLE_TAG.toString() ) )
+        {
+            sink.tableCaption_();
+        }
+        else if ( isParent( SimplifiedDocbookMarkup.SECTION_TAG.toString() ) )
+        {
+            sink.sectionTitle_( level );
+        }
+        else if ( isParent( SimplifiedDocbookMarkup.ARTICLE_TAG.toString() )
+                || isParent( 
SimplifiedDocbookMarkup.ARTICLEINFO_TAG.toString() ) )
+        {
+            sink.title_();
+        }
+        // else ignore
     }
 
     private void handleUlinkStart( XmlPullParser parser, Sink sink )


Reply via email to