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 )