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() ); + } }