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 jd...@apache.org on 2008/07/15 19:19:51 UTC
svn commit: r676983 - in
/maven/doxia/doxia/trunk/doxia-modules/doxia-module-xdoc/src:
main/java/org/apache/maven/doxia/module/xdoc/XdocParser.java
test/java/org/apache/maven/doxia/module/xdoc/XdocParserTest.java
Author: jdcasey
Date: Tue Jul 15 10:19:51 2008
New Revision: 676983
URL: http://svn.apache.org/viewvc?rev=676983&view=rev
Log:
[DOXIA-245] Use 'id' of xdoc section to generate an html anchor.
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
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=676983&r1=676982&r2=676983&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 Tue Jul 15 10:19:51 2008
@@ -141,6 +141,13 @@
{
closeOpenSections( Sink.SECTION_LEVEL_1, sink );
+ Object id = attribs.getAttribute( Attribute.ID.toString() );
+ if ( id != null )
+ {
+ sink.anchor( id.toString() );
+ sink.anchor_();
+ }
+
sink.section( Sink.SECTION_LEVEL_1, attribs );
sink.sectionTitle( Sink.SECTION_LEVEL_1, attribs );
@@ -153,6 +160,13 @@
{
closeOpenSections( Sink.SECTION_LEVEL_2, sink );
+ Object id = attribs.getAttribute( Attribute.ID.toString() );
+ if ( id != null )
+ {
+ sink.anchor( id.toString() );
+ sink.anchor_();
+ }
+
sink.section( Sink.SECTION_LEVEL_2, attribs );
sink.sectionTitle( Sink.SECTION_LEVEL_2, attribs );
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=676983&r1=676982&r2=676983&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 Tue Jul 15 10:19:51 2008
@@ -24,6 +24,7 @@
import java.io.Reader;
import java.io.Writer;
+import java.util.Arrays;
import java.util.Iterator;
import org.apache.maven.doxia.parser.AbstractParserTest;
@@ -237,4 +238,31 @@
{
return text.replaceAll( EOL, "" );
}
+
+ public void testSectionIdAnchor()
+ throws Exception
+ {
+ String text = "<section name=\"test\" id=\"test-id\">This is a test.</section>";
+
+ SinkEventTestingSink sink = new SinkEventTestingSink();
+
+ parser.parse( text, sink );
+
+ Iterator it = sink.getEventList().iterator();
+
+ SinkEventElement anchorEvt = (SinkEventElement) it.next();
+
+ assertEquals( "anchor", anchorEvt.getName() );
+ assertEquals( "test-id", anchorEvt.getArgs()[0] );
+
+ assertEquals( "anchor_", ( (SinkEventElement) it.next() ).getName() );
+ assertEquals( "section1", ( (SinkEventElement) it.next() ).getName() );
+ assertEquals( "sectionTitle1", ( (SinkEventElement) it.next() ).getName() );
+ assertEquals( "text", ( (SinkEventElement) it.next() ).getName() );
+ assertEquals( "sectionTitle1_", ( (SinkEventElement) it.next() ).getName() );
+ assertEquals( "text", ( (SinkEventElement) it.next() ).getName() );
+ assertEquals( "section1_", ( (SinkEventElement) it.next() ).getName() );
+ assertFalse( it.hasNext() );
+ }
+
}