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}