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}