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/04/08 09:16:24 UTC

svn commit: r763127 - in /maven/doxia/doxia/trunk/doxia-modules: doxia-module-xdoc/src/main/java/org/apache/maven/doxia/module/xdoc/ doxia-module-xdoc/src/test/java/org/apache/maven/doxia/module/xdoc/ doxia-module-xhtml/src/main/java/org/apache/maven/d...

Author: ltheussl
Date: Wed Apr  8 07:16:23 2009
New Revision: 763127

URL: http://svn.apache.org/viewvc?rev=763127&view=rev
Log:
[DOXIA-129] Allow correctly head element in xdoc

Modified:
    maven/doxia/doxia/trunk/doxia-modules/doxia-module-xdoc/src/main/java/org/apache/maven/doxia/module/xdoc/XdocParser.java
    maven/doxia/doxia/trunk/doxia-modules/doxia-module-xdoc/src/test/java/org/apache/maven/doxia/module/xdoc/XdocParserTest.java
    maven/doxia/doxia/trunk/doxia-modules/doxia-module-xhtml/src/main/java/org/apache/maven/doxia/module/xhtml/XhtmlParser.java

Modified: maven/doxia/doxia/trunk/doxia-modules/doxia-module-xdoc/src/main/java/org/apache/maven/doxia/module/xdoc/XdocParser.java
URL: http://svn.apache.org/viewvc/maven/doxia/doxia/trunk/doxia-modules/doxia-module-xdoc/src/main/java/org/apache/maven/doxia/module/xdoc/XdocParser.java?rev=763127&r1=763126&r2=763127&view=diff
==============================================================================
--- maven/doxia/doxia/trunk/doxia-modules/doxia-module-xdoc/src/main/java/org/apache/maven/doxia/module/xdoc/XdocParser.java (original)
+++ maven/doxia/doxia/trunk/doxia-modules/doxia-module-xdoc/src/main/java/org/apache/maven/doxia/module/xdoc/XdocParser.java Wed Apr  8 07:16:23 2009
@@ -69,6 +69,8 @@
     /** The macro parameters. */
     private Map macroParameters = new HashMap();
 
+    /** Indicates that we're inside <properties> or <head>.*/
+    private boolean inHead;
 
     /** {@inheritDoc} */
     public void parse( Reader source, Sink sink )
@@ -112,7 +114,12 @@
         }
         else if ( parser.getName().equals( Tag.HEAD.toString() ) )
         {
-            sink.head( attribs );
+            if ( !inHead ) // we might be in head from a <properties> already
+            {
+                this.inHead = true;
+
+                sink.head( attribs );
+            }
         }
         else if ( parser.getName().equals( Tag.TITLE.toString() ) )
         {
@@ -126,8 +133,40 @@
         {
             sink.date( attribs );
         }
+        else if ( parser.getName().equals( Tag.META.toString() ) )
+        {
+            String name = parser.getAttributeValue( null, Attribute.NAME.toString() );
+            String content = parser.getAttributeValue( null, Attribute.CONTENT.toString() );
+
+            if ( "author".equals( name ) )
+            {
+                sink.author( null );
+
+                sink.text( content );
+
+                sink.author_();
+            }
+            else if ( "date".equals( name ) )
+            {
+                sink.date( null );
+
+                sink.text( content );
+
+                sink.date_();
+            }
+            else
+            {
+                sink.unknown( "meta", new Object[] {new Integer( TAG_TYPE_SIMPLE )}, attribs );
+            }
+        }
         else if ( parser.getName().equals( Tag.BODY.toString() ) )
         {
+            if ( inHead )
+            {
+                sink.head_();
+                this.inHead = false;
+            }
+
             sink.body( attribs );
         }
         else if ( parser.getName().equals( SECTION_TAG.toString() ) )
@@ -178,7 +217,12 @@
         }
         else if ( parser.getName().equals( PROPERTIES_TAG.toString() ) )
         {
-            sink.head();
+            if ( !inHead ) // we might be in head from a <head> already
+            {
+                this.inHead = true;
+
+                sink.head( attribs );
+            }
         }
 
         // ----------------------------------------------------------------------
@@ -266,7 +310,7 @@
         }
         else if ( parser.getName().equals( Tag.HEAD.toString() ) )
         {
-            sink.head_();
+            //Do nothing, head is closed with BODY start.
         }
         else if ( parser.getName().equals( Tag.BODY.toString() ) )
         {
@@ -294,7 +338,7 @@
         }
         else if ( parser.getName().equals( PROPERTIES_TAG.toString() ) )
         {
-            sink.head_();
+            //Do nothing, head is closed with BODY start.
         }
 
         // ----------------------------------------------------------------------

Modified: maven/doxia/doxia/trunk/doxia-modules/doxia-module-xdoc/src/test/java/org/apache/maven/doxia/module/xdoc/XdocParserTest.java
URL: http://svn.apache.org/viewvc/maven/doxia/doxia/trunk/doxia-modules/doxia-module-xdoc/src/test/java/org/apache/maven/doxia/module/xdoc/XdocParserTest.java?rev=763127&r1=763126&r2=763127&view=diff
==============================================================================
--- maven/doxia/doxia/trunk/doxia-modules/doxia-module-xdoc/src/test/java/org/apache/maven/doxia/module/xdoc/XdocParserTest.java (original)
+++ maven/doxia/doxia/trunk/doxia-modules/doxia-module-xdoc/src/test/java/org/apache/maven/doxia/module/xdoc/XdocParserTest.java Wed Apr  8 07:16:23 2009
@@ -151,8 +151,9 @@
     public void testHeadEventsList()
         throws Exception
     {
-        // TODO: separate <head> from <properties>, see DOXIA-129
-        String text = "<properties><title>title</title><author email=\"a@b.c\">John Doe</author></properties>";
+        String text = "<document>"
+                + "<properties><title>title</title><author email=\"a@b.c\">John Doe</author></properties>"
+                + "<head><meta name=\"security\" content=\"low\"/></head><body></body></document>";
 
         SinkEventTestingSink sink = new SinkEventTestingSink();
 
@@ -167,17 +168,10 @@
         assertEquals( "author", ( (SinkEventElement) it.next() ).getName() );
         assertEquals( "text", ( (SinkEventElement) it.next() ).getName() );
         assertEquals( "author_", ( (SinkEventElement) it.next() ).getName() );
-        assertEquals( "head_", ( (SinkEventElement) it.next() ).getName() );
-        assertFalse( it.hasNext() );
-
-        text = "<head><meta name=\"security\" content=\"low\"/></head>";
-        sink.reset();
-        parser.parse( text, sink );
-        it = sink.getEventList().iterator();
-
-        assertEquals( "head", ( (SinkEventElement) it.next() ).getName() );
         assertEquals( "unknown", ( (SinkEventElement) it.next() ).getName() );
         assertEquals( "head_", ( (SinkEventElement) it.next() ).getName() );
+        assertEquals( "body", ( (SinkEventElement) it.next() ).getName() );
+        assertEquals( "body_", ( (SinkEventElement) it.next() ).getName() );
         assertFalse( it.hasNext() );
     }
 

Modified: maven/doxia/doxia/trunk/doxia-modules/doxia-module-xhtml/src/main/java/org/apache/maven/doxia/module/xhtml/XhtmlParser.java
URL: http://svn.apache.org/viewvc/maven/doxia/doxia/trunk/doxia-modules/doxia-module-xhtml/src/main/java/org/apache/maven/doxia/module/xhtml/XhtmlParser.java?rev=763127&r1=763126&r2=763127&view=diff
==============================================================================
--- maven/doxia/doxia/trunk/doxia-modules/doxia-module-xhtml/src/main/java/org/apache/maven/doxia/module/xhtml/XhtmlParser.java (original)
+++ maven/doxia/doxia/trunk/doxia-modules/doxia-module-xhtml/src/main/java/org/apache/maven/doxia/module/xhtml/XhtmlParser.java Wed Apr  8 07:16:23 2009
@@ -25,8 +25,8 @@
 import org.apache.maven.doxia.macro.MacroExecutionException;
 import org.apache.maven.doxia.parser.XhtmlBaseParser;
 import org.apache.maven.doxia.sink.Sink;
-
 import org.apache.maven.doxia.sink.SinkEventAttributeSet;
+
 import org.codehaus.plexus.util.xml.pull.XmlPullParser;
 import org.codehaus.plexus.util.xml.pull.XmlPullParserException;
 
@@ -72,15 +72,11 @@
         else if ( parser.getName().equals( Tag.META.toString() ) )
         {
             String name = parser.getAttributeValue( null, Attribute.NAME.toString() );
-
             String content = parser.getAttributeValue( null, Attribute.CONTENT.toString() );
 
-            attribs.removeAttribute( Attribute.NAME.toString() );
-            attribs.removeAttribute( Attribute.CONTENT.toString() );
-
             if ( "author".equals( name ) )
             {
-                sink.author( attribs );
+                sink.author( null );
 
                 sink.text( content );
 
@@ -88,7 +84,7 @@
             }
             else if ( "date".equals( name ) )
             {
-                sink.date( attribs );
+                sink.date( null );
 
                 sink.text( content );
 
@@ -96,7 +92,7 @@
             }
             else
             {
-                sink.unknown( "meta", new String[] {name, content}, attribs );
+                sink.unknown( "meta", new Object[] {new Integer( TAG_TYPE_SIMPLE )}, attribs );
             }
         }
         /*