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 )