Author: hboutemy
Date: Wed Mar 30 21:31:26 2011
New Revision: 1087084

URL: http://svn.apache.org/viewvc?rev=1087084&view=rev
Log:
[DOXIASITETOOLS-53] avoid auto-generated anchor when anchor explicitely added

Modified:
    
maven/doxia/doxia-sitetools/trunk/doxia-site-renderer/src/main/java/org/apache/maven/doxia/siterenderer/sink/SiteRendererSink.java
    
maven/doxia/doxia-sitetools/trunk/doxia-site-renderer/src/test/java/org/apache/maven/doxia/siterenderer/AptVerifier.java
    
maven/doxia/doxia-sitetools/trunk/doxia-site-renderer/src/test/resources/site/apt/apt.apt

Modified: 
maven/doxia/doxia-sitetools/trunk/doxia-site-renderer/src/main/java/org/apache/maven/doxia/siterenderer/sink/SiteRendererSink.java
URL: 
http://svn.apache.org/viewvc/maven/doxia/doxia-sitetools/trunk/doxia-site-renderer/src/main/java/org/apache/maven/doxia/siterenderer/sink/SiteRendererSink.java?rev=1087084&r1=1087083&r2=1087084&view=diff
==============================================================================
--- 
maven/doxia/doxia-sitetools/trunk/doxia-site-renderer/src/main/java/org/apache/maven/doxia/siterenderer/sink/SiteRendererSink.java
 (original)
+++ 
maven/doxia/doxia-sitetools/trunk/doxia-site-renderer/src/main/java/org/apache/maven/doxia/siterenderer/sink/SiteRendererSink.java
 Wed Mar 30 21:31:26 2011
@@ -22,7 +22,9 @@ package org.apache.maven.doxia.siterende
 import java.io.StringWriter;
 import java.io.Writer;
 import java.util.ArrayList;
+import java.util.HashSet;
 import java.util.List;
+import java.util.Set;
 
 import javax.swing.text.html.HTML.Attribute;
 
@@ -56,6 +58,10 @@ public class SiteRendererSink
 
     private boolean sectionHasID;
 
+    private boolean sectionTitle;
+
+    private Set anchorsInSectionTitle;
+
     private final Writer writer;
 
     private RenderingContext renderingContext;
@@ -218,10 +224,25 @@ public class SiteRendererSink
     }
 
     /** {@inheritDoc} */
+    public void anchor( String name, SinkEventAttributes attributes )
+    {
+        super.anchor( name, attributes );
+        if ( sectionTitle )
+        {
+            if ( anchorsInSectionTitle == null )
+            {
+                anchorsInSectionTitle = new HashSet();
+            }
+            anchorsInSectionTitle.add( name );
+        }
+    }
+    
+    /** {@inheritDoc} */
     protected void onSectionTitle( int depth, SinkEventAttributes attributes )
     {
         this.sectionTitleBuffer = new StringBuffer();
         sectionHasID = ( attributes != null && attributes.isDefined ( 
Attribute.ID.toString() ) );
+        sectionTitle = true;
 
         super.onSectionTitle( depth, attributes );
     }
@@ -234,14 +255,20 @@ public class SiteRendererSink
 
         if ( !sectionHasID && !StringUtils.isEmpty( sectionTitle ) )
         {
-            anchor( HtmlTools.encodeId( sectionTitle ) );
-            anchor_();
+            String id = HtmlTools.encodeId( sectionTitle );
+            if ( ( anchorsInSectionTitle == null ) || (! 
anchorsInSectionTitle.contains( id ) ) )
+            {
+                anchor( id );
+                anchor_();
+            }
         }
         else
         {
             sectionHasID = false;
         }
 
+        this.sectionTitle = false;
+        anchorsInSectionTitle = null;
         super.onSectionTitle_( depth );
     }
 

Modified: 
maven/doxia/doxia-sitetools/trunk/doxia-site-renderer/src/test/java/org/apache/maven/doxia/siterenderer/AptVerifier.java
URL: 
http://svn.apache.org/viewvc/maven/doxia/doxia-sitetools/trunk/doxia-site-renderer/src/test/java/org/apache/maven/doxia/siterenderer/AptVerifier.java?rev=1087084&r1=1087083&r2=1087084&view=diff
==============================================================================
--- 
maven/doxia/doxia-sitetools/trunk/doxia-site-renderer/src/test/java/org/apache/maven/doxia/siterenderer/AptVerifier.java
 (original)
+++ 
maven/doxia/doxia-sitetools/trunk/doxia-site-renderer/src/test/java/org/apache/maven/doxia/siterenderer/AptVerifier.java
 Wed Mar 30 21:31:26 2011
@@ -161,5 +161,17 @@ public class AptVerifier
         unknown = (UnknownHtmlElement) elementIterator.next();
         assertEquals( "tt", unknown.getTagName() );
         assertEquals( "mono", unknown.asText().trim() );
+
+        div = (HtmlDivision) elementIterator.next();
+        assertEquals( "section", div.getAttributeValue( "class" ) );
+
+        h2 = (HtmlHeader2) elementIterator.next();
+        assertNotNull( h2 );
+        assertEquals( "No Default Anchor in Section Title with Explicit 
Anchor", h2.asText().trim() );
+        a = (HtmlAnchor) elementIterator.next();
+        assertEquals( 
"No_Default_Anchor_in_Section_Title_with_Explicit_Anchor", a.getAttributeValue( 
"name" ) );
+
+        div = (HtmlDivision) elementIterator.next();
+        assertEquals( "section", div.getAttributeValue( "class" ) );
     }
 }

Modified: 
maven/doxia/doxia-sitetools/trunk/doxia-site-renderer/src/test/resources/site/apt/apt.apt
URL: 
http://svn.apache.org/viewvc/maven/doxia/doxia-sitetools/trunk/doxia-site-renderer/src/test/resources/site/apt/apt.apt?rev=1087084&r1=1087083&r2=1087084&view=diff
==============================================================================
--- 
maven/doxia/doxia-sitetools/trunk/doxia-site-renderer/src/test/resources/site/apt/apt.apt
 (original)
+++ 
maven/doxia/doxia-sitetools/trunk/doxia-site-renderer/src/test/resources/site/apt/apt.apt
 Wed Mar 30 21:31:26 2011
@@ -44,6 +44,8 @@ Section formatting: <italic> <<bold>> <<
 
   <italic> <<bold>> <<<mono>>>
 
+{No Default Anchor in Section Title with Explicit Anchor}
+
 TOC Macro
 
 %{toc}


Reply via email to