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