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