You are viewing a plain text version of this content. The canonical link for it is here.
Posted to doxia-commits@maven.apache.org by lt...@apache.org on 2009/06/12 13:10:52 UTC
svn commit: r784069 - in
/maven/doxia/doxia/trunk/doxia-modules/doxia-module-docbook-simple/src:
main/java/org/apache/maven/doxia/module/docbook/DocBookParser.java
test/java/org/apache/maven/doxia/module/docbook/DocBookParserTest.java
Author: ltheussl
Date: Fri Jun 12 11:10:52 2009
New Revision: 784069
URL: http://svn.apache.org/viewvc?rev=784069&view=rev
Log:
Put back title, corpauthor and date within articleinfo
Modified:
maven/doxia/doxia/trunk/doxia-modules/doxia-module-docbook-simple/src/main/java/org/apache/maven/doxia/module/docbook/DocBookParser.java
maven/doxia/doxia/trunk/doxia-modules/doxia-module-docbook-simple/src/test/java/org/apache/maven/doxia/module/docbook/DocBookParserTest.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=784069&r1=784068&r2=784069&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 Fri Jun 12 11:10:52 2009
@@ -58,6 +58,8 @@
private boolean inHead;
+ private boolean ignore;
+
/**
* A selective stack of parent elements
*/
@@ -75,6 +77,12 @@
private static final Collection META_ELEMENTS = new HashSet();
/**
+ * Simplified DocBook elements that occur within <articleinfo>
+ * and that are currently recognized by the parser.
+ */
+ private static final Collection ARTICLEINFO_ELEMENTS = new HashSet();
+
+ /**
* The list of DocBook elements that will be rendered verbatim
*/
private static final Collection VERBATIM_ELEMENTS = new HashSet();
@@ -102,6 +110,10 @@
META_ELEMENTS.add( SimplifiedDocbookMarkup.TITLE_TAG.toString() );
META_ELEMENTS.add( SimplifiedDocbookMarkup.TITLEABBREV_TAG.toString() );
+ ARTICLEINFO_ELEMENTS.add( SimplifiedDocbookMarkup.TITLE_TAG.toString() );
+ ARTICLEINFO_ELEMENTS.add( SimplifiedDocbookMarkup.CORPAUTHOR_TAG.toString() );
+ ARTICLEINFO_ELEMENTS.add( SimplifiedDocbookMarkup.DATE_TAG.toString() );
+
HIER_ELEMENTS.add( SimplifiedDocbookMarkup.SECTION_TAG.toString() );
HIER_ELEMENTS.add( SimplifiedDocbookMarkup.APPENDIX_TAG.toString() );
HIER_ELEMENTS.add( SimplifiedDocbookMarkup.BIBLIOGRAPHY_TAG.toString() );
@@ -145,17 +157,16 @@
sink.body();
}
- if ( isParent( SimplifiedDocbookMarkup.ARTICLEINFO_TAG.toString() ) )
- {
- return; // TODO: meta data are ignored, implement!
- }
-
SinkEventAttributeSet attribs = getAttributesFromParser( parser );
if ( parser.getName().equals( SimplifiedDocbookMarkup.ARTICLE_TAG.toString() ) )
{
handleArticleStart( sink, attribs );
}
+ else if ( isParent( SimplifiedDocbookMarkup.ARTICLEINFO_TAG.toString() ) )
+ {
+ handleArticleInfoStartTags( parser.getName(), sink, attribs );
+ }
else if ( parser.getName().equals( SimplifiedDocbookMarkup.ARTICLEINFO_TAG.toString() ) )
{
parent.push( SimplifiedDocbookMarkup.ARTICLEINFO_TAG.toString() );
@@ -188,14 +199,6 @@
{
handleTitleStart( sink, attribs );
}
- else if ( parser.getName().equals( SimplifiedDocbookMarkup.CORPAUTHOR_TAG.toString() ) )
- {
- sink.author( attribs );
- }
- else if ( parser.getName().equals( SimplifiedDocbookMarkup.DATE_TAG.toString() ) )
- {
- sink.date( attribs );
- }
else if ( parser.getName().equals( SimplifiedDocbookMarkup.EMAIL_TAG.toString() ) )
{
handleEmailStart( parser, sink, attribs );
@@ -227,7 +230,7 @@
}
else if ( isParent( SimplifiedDocbookMarkup.ARTICLEINFO_TAG.toString() ) )
{
- return; // TODO: meta data are ignored, implement!
+ handleArticleInfoEndTags( parser.getName(), sink );
}
else if ( HIER_ELEMENTS.contains( parser.getName() ) )
{
@@ -361,14 +364,6 @@
{
handleTitleEnd( sink );
}
- else if ( parser.getName().equals( SimplifiedDocbookMarkup.CORPAUTHOR_TAG.toString() ) )
- {
- sink.author_();
- }
- else if ( parser.getName().equals( SimplifiedDocbookMarkup.DATE_TAG.toString() ) )
- {
- sink.date_();
- }
else if ( parser.getName().equals( SimplifiedDocbookMarkup.ULINK_TAG.toString() )
|| parser.getName().equals( SimplifiedDocbookMarkup.LINK_TAG.toString() ) )
{
@@ -419,7 +414,7 @@
protected void handleCdsect( XmlPullParser parser, Sink sink )
throws XmlPullParserException
{
- if ( !isParent( SimplifiedDocbookMarkup.ARTICLEINFO_TAG.toString() ) )
+ if ( !ignore )
{
super.handleCdsect( parser, sink );
}
@@ -429,7 +424,7 @@
protected void handleEntity( XmlPullParser parser, Sink sink )
throws XmlPullParserException
{
- if ( !isParent( SimplifiedDocbookMarkup.ARTICLEINFO_TAG.toString() ) )
+ if ( !ignore )
{
super.handleEntity( parser, sink );
}
@@ -439,7 +434,7 @@
protected void handleText( XmlPullParser parser, Sink sink )
throws XmlPullParserException
{
- if ( !isParent( SimplifiedDocbookMarkup.ARTICLEINFO_TAG.toString() ) )
+ if ( !ignore )
{
super.handleText( parser, sink );
}
@@ -449,6 +444,50 @@
//
// ----------------------------------------------------------------------
+ private void handleArticleInfoStartTags( String name, Sink sink, SinkEventAttributeSet attribs )
+ {
+ if ( !ARTICLEINFO_ELEMENTS.contains( name ) )
+ {
+ ignore = true;
+ return; // TODO: other meta data are ignored, implement!
+ }
+
+ if ( name.equals( SimplifiedDocbookMarkup.TITLE_TAG.toString() ) )
+ {
+ sink.title( attribs );
+ }
+ else if ( name.equals( SimplifiedDocbookMarkup.CORPAUTHOR_TAG.toString() ) )
+ {
+ sink.author( attribs );
+ }
+ else if ( name.equals( SimplifiedDocbookMarkup.DATE_TAG.toString() ) )
+ {
+ sink.date( attribs );
+ }
+ }
+
+ private void handleArticleInfoEndTags( String name, Sink sink )
+ {
+ if ( !ARTICLEINFO_ELEMENTS.contains( name ) )
+ {
+ ignore = false;
+ return; // TODO: other meta data are ignored, implement!
+ }
+
+ if ( name.equals( SimplifiedDocbookMarkup.TITLE_TAG.toString() ) )
+ {
+ sink.title_();
+ }
+ else if ( name.equals( SimplifiedDocbookMarkup.CORPAUTHOR_TAG.toString() ) )
+ {
+ sink.author_();
+ }
+ else if ( name.equals( SimplifiedDocbookMarkup.DATE_TAG.toString() ) )
+ {
+ sink.date_();
+ }
+ }
+
private void handleCaptionStart( Sink sink, SinkEventAttributeSet attribs )
{
if ( isParent( SimplifiedDocbookMarkup.MEDIAOBJECT_TAG.toString() ) )
Modified: maven/doxia/doxia/trunk/doxia-modules/doxia-module-docbook-simple/src/test/java/org/apache/maven/doxia/module/docbook/DocBookParserTest.java
URL: http://svn.apache.org/viewvc/maven/doxia/doxia/trunk/doxia-modules/doxia-module-docbook-simple/src/test/java/org/apache/maven/doxia/module/docbook/DocBookParserTest.java?rev=784069&r1=784068&r2=784069&view=diff
==============================================================================
--- maven/doxia/doxia/trunk/doxia-modules/doxia-module-docbook-simple/src/test/java/org/apache/maven/doxia/module/docbook/DocBookParserTest.java (original)
+++ maven/doxia/doxia/trunk/doxia-modules/doxia-module-docbook-simple/src/test/java/org/apache/maven/doxia/module/docbook/DocBookParserTest.java Fri Jun 12 11:10:52 2009
@@ -371,4 +371,36 @@
assertEquals( "table_", ( (SinkEventElement) it.next() ).getName() );
assertFalse( it.hasNext() );
}
+
+ /** @throws Exception */
+ public void testHead()
+ throws Exception
+ {
+ String text = "<article><articleinfo><title>Title</title>"
+ + "<corpauthor>CorpAuthor</corpauthor><date>Date</date></articleinfo>"
+ + "<para>Paragraph</para></article>";
+
+ final SinkEventTestingSink sink = new SinkEventTestingSink();
+ parser.parse( text, sink );
+
+ Iterator it = sink.getEventList().iterator();
+
+ assertEquals( "head", ( (SinkEventElement) it.next() ).getName() );
+ assertEquals( "title", ( (SinkEventElement) it.next() ).getName() );
+ assertEquals( "text", ( (SinkEventElement) it.next() ).getName() );
+ assertEquals( "title_", ( (SinkEventElement) it.next() ).getName() );
+ assertEquals( "author", ( (SinkEventElement) it.next() ).getName() );
+ assertEquals( "text", ( (SinkEventElement) it.next() ).getName() );
+ assertEquals( "author_", ( (SinkEventElement) it.next() ).getName() );
+ assertEquals( "date", ( (SinkEventElement) it.next() ).getName() );
+ assertEquals( "text", ( (SinkEventElement) it.next() ).getName() );
+ assertEquals( "date_", ( (SinkEventElement) it.next() ).getName() );
+ assertEquals( "head_", ( (SinkEventElement) it.next() ).getName() );
+ assertEquals( "body", ( (SinkEventElement) it.next() ).getName() );
+ assertEquals( "paragraph", ( (SinkEventElement) it.next() ).getName() );
+ assertEquals( "text", ( (SinkEventElement) it.next() ).getName() );
+ assertEquals( "paragraph_", ( (SinkEventElement) it.next() ).getName() );
+ assertEquals( "body_", ( (SinkEventElement) it.next() ).getName() );
+ assertFalse( it.hasNext() );
+ }
}