Author: ltheussl
Date: Thu Jun  4 09:31:52 2009
New Revision: 781693

URL: http://svn.apache.org/viewvc?rev=781693&view=rev
Log:
[DOXIA-184] Fix head

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=781693&r1=781692&r2=781693&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 09:31:52 2009
@@ -56,6 +56,8 @@
      */
     private boolean isBold;
 
+    private boolean inHead;
+
     /**
      * A selective stack of parent elements
      */
@@ -67,6 +69,12 @@
     private static final Collection HIER_ELEMENTS = new HashSet();
 
     /**
+     * Simplified DocBook elements that are direct children of <article>
+     * and that should be emitted into the Sink's head.
+     */
+    private static final Collection META_ELEMENTS = new HashSet();
+
+    /**
      * The list of DocBook elements that will be rendered verbatim
      */
     private static final Collection VERBATIM_ELEMENTS = new HashSet();
@@ -88,6 +96,12 @@
 
     static
     {
+        META_ELEMENTS.add( SimplifiedDocbookMarkup.ARTICLEINFO_TAG.toString() 
);
+        META_ELEMENTS.add( SimplifiedDocbookMarkup.AUTHORBLURB_TAG.toString() 
);
+        META_ELEMENTS.add( SimplifiedDocbookMarkup.SUBTITLE_TAG.toString() );
+        META_ELEMENTS.add( SimplifiedDocbookMarkup.TITLE_TAG.toString() );
+        META_ELEMENTS.add( SimplifiedDocbookMarkup.TITLEABBREV_TAG.toString() 
);
+
         HIER_ELEMENTS.add( SimplifiedDocbookMarkup.SECTION_TAG.toString() );
         HIER_ELEMENTS.add( SimplifiedDocbookMarkup.ARTICLE_TAG.toString() );
         HIER_ELEMENTS.add( SimplifiedDocbookMarkup.APPENDIX_TAG.toString() );
@@ -122,6 +136,16 @@
     protected void handleStartTag( XmlPullParser parser, Sink sink )
         throws XmlPullParserException, MacroExecutionException
     {
+        if ( inHead && !META_ELEMENTS.contains( parser.getName() )
+                && isParent( SimplifiedDocbookMarkup.ARTICLE_TAG.toString() ) )
+        {
+            sink.head_();
+            inHead = false;
+
+            // assume any element that is not meta starts the body
+            sink.body();
+        }
+
         handleIdAnchor( getAttributeValue( parser, ID_ATTRIBUTE ), sink );
 
         if ( HIER_ELEMENTS.contains( parser.getName() ) )
@@ -278,10 +302,10 @@
             else
             {
                 sink.section_( level );
-                parent.pop();
             }
             //decrease the nesting level
             level--;
+            parent.pop();
         }
         else if ( parser.getName().equals( 
SimplifiedDocbookMarkup.ITEMIZEDLIST_TAG.toString() ) )
         {
@@ -531,16 +555,18 @@
         //increase the nesting level
         level++;
 
-        //if this is the root element, handle it as body
-        if ( level == 0 )
+        //if this is the root element, start head
+        if ( parser.getName().equals( 
SimplifiedDocbookMarkup.ARTICLE_TAG.toString() ) )
         {
-            sink.body();
+            sink.head();
+            inHead = true;
         }
         else
         {
             sink.section( level, null );
-            parent.push( parser.getName() );
         }
+
+        parent.push( parser.getName() );
     }
 
     private void handleIdAnchor( String id, Sink sink )


Reply via email to