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 );
}
}
/*