You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by hb...@apache.org on 2014/06/22 17:36:56 UTC

svn commit: r1604604 - in /maven/doxia/doxia-sitetools/trunk/doxia-site-renderer/src: main/java/org/apache/maven/doxia/siterenderer/sink/ test/java/org/apache/maven/doxia/siterenderer/

Author: hboutemy
Date: Sun Jun 22 15:36:56 2014
New Revision: 1604604

URL: http://svn.apache.org/r1604604
Log:
[DOXIASITETOOLS-91] generate section title anchors at beginning of section instead of end, for better usability in web browser

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/java/org/apache/maven/doxia/siterenderer/FaqVerifier.java

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=1604604&r1=1604603&r2=1604604&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 Sun Jun 22 15:36:56 2014
@@ -55,6 +55,8 @@ public class SiteRendererSink
 
     private StringBuilder sectionTitleBuffer;
 
+    private StringBuilder sectionTitleWriteBuffer;
+
     private boolean sectionHasID;
 
     private boolean isSectionTitle;
@@ -263,11 +265,13 @@ public class SiteRendererSink
     @Override
     protected void onSectionTitle( int depth, SinkEventAttributes attributes )
     {
-        this.sectionTitleBuffer = new StringBuilder();
         sectionHasID = ( attributes != null && attributes.isDefined ( Attribute.ID.toString() ) );
         isSectionTitle = true;
 
         super.onSectionTitle( depth, attributes );
+
+        this.sectionTitleBuffer = new StringBuilder();
+        this.sectionTitleWriteBuffer = new StringBuilder();
     }
 
     /** {@inheritDoc} */
@@ -276,20 +280,27 @@ public class SiteRendererSink
     {
         String sectionTitle = sectionTitleBuffer.toString();
         this.sectionTitleBuffer = null;
+        String sectionWriteTitle = sectionTitleWriteBuffer.toString();
+        this.sectionTitleWriteBuffer = null;
 
-        if ( !sectionHasID && !StringUtils.isEmpty( sectionTitle ) )
+        if ( !StringUtils.isEmpty( sectionTitle ) )
         {
-            String id = HtmlTools.encodeId( sectionTitle );
-            if ( ( anchorsInSectionTitle == null ) || ( !anchorsInSectionTitle.contains( id ) ) )
+            if ( sectionHasID )
             {
-                anchor( id );
-                anchor_();
+                sectionHasID = false;
+            }
+            else
+            {
+                String id = HtmlTools.encodeId( sectionTitle );
+                if ( ( anchorsInSectionTitle == null ) || ( !anchorsInSectionTitle.contains( id ) ) )
+                {
+                    anchor( id );
+                    anchor_();
+                }
             }
         }
-        else
-        {
-            sectionHasID = false;
-        }
+
+        super.write( sectionWriteTitle );
 
         this.isSectionTitle = false;
         anchorsInSectionTitle = null;
@@ -347,6 +358,14 @@ public class SiteRendererSink
             }
         }
 
-        super.write( txt );
+        if ( sectionTitleWriteBuffer != null )
+        {
+            // this implies we're inside a section title, collect text events for anchor generation
+            sectionTitleWriteBuffer.append( txt );
+        }
+        else
+        {
+            super.write( txt );
+        }
     }
 }

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=1604604&r1=1604603&r2=1604604&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 Sun Jun 22 15:36:56 2014
@@ -113,6 +113,9 @@ public class AptVerifier
         // Note: htmlunit strips the white space, actual result is ok
         assertEquals( "Section formatting: italicboldmono", h2.asText().trim() );
 
+        a = (HtmlAnchor) elementIterator.next();
+        assertEquals( "Section_formatting:_italic_bold_mono", a.getAttribute( "name" ) );
+
         HtmlItalic italic = (HtmlItalic) elementIterator.next();
         assertEquals( "i", italic.getTagName() );
         assertEquals( "italic", italic.asText().trim() );
@@ -125,9 +128,6 @@ public class AptVerifier
         assertEquals( "tt", tt.getTagName() );
         assertEquals( "mono", tt.asText().trim() );
 
-        a = (HtmlAnchor) elementIterator.next();
-        assertEquals( "Section_formatting:_italic_bold_mono", a.getAttribute( "name" ) );
-
         div = (HtmlDivision) elementIterator.next();
         assertEquals( "section", div.getAttribute( "class" ) );
 
@@ -136,6 +136,9 @@ public class AptVerifier
         // Note: htmlunit strips the white space, actual result is ok
         assertEquals( "SubSection formatting: italicboldmono", h3.asText().trim() );
 
+        a = (HtmlAnchor) elementIterator.next();
+        assertEquals( "SubSection_formatting:_italic_bold_mono", a.getAttribute( "name" ) );
+
         italic = (HtmlItalic) elementIterator.next();
         assertEquals( "i", italic.getTagName() );
         assertEquals( "italic", italic.asText().trim() );
@@ -148,9 +151,6 @@ public class AptVerifier
         assertEquals( "tt", tt.getTagName() );
         assertEquals( "mono", tt.asText().trim() );
 
-        a = (HtmlAnchor) elementIterator.next();
-        assertEquals( "SubSection_formatting:_italic_bold_mono", a.getAttribute( "name" ) );
-
         p = (HtmlParagraph) elementIterator.next();
         assertNotNull( p );
 

Modified: maven/doxia/doxia-sitetools/trunk/doxia-site-renderer/src/test/java/org/apache/maven/doxia/siterenderer/FaqVerifier.java
URL: http://svn.apache.org/viewvc/maven/doxia/doxia-sitetools/trunk/doxia-site-renderer/src/test/java/org/apache/maven/doxia/siterenderer/FaqVerifier.java?rev=1604604&r1=1604603&r2=1604604&view=diff
==============================================================================
--- maven/doxia/doxia-sitetools/trunk/doxia-site-renderer/src/test/java/org/apache/maven/doxia/siterenderer/FaqVerifier.java (original)
+++ maven/doxia/doxia-sitetools/trunk/doxia-site-renderer/src/test/java/org/apache/maven/doxia/siterenderer/FaqVerifier.java Sun Jun 22 15:36:56 2014
@@ -68,10 +68,10 @@ public class FaqVerifier
         assertEquals( h2.asText().trim(), "Oft Asked Questions" );
 
         HtmlAnchor a = (HtmlAnchor) elementIterator.next();
-        assertEquals( a.getAttribute( "name" ), "top" );
+        assertEquals( "Oft_Asked_Questions", a.getAttribute( "name" ) );
 
         a = (HtmlAnchor) elementIterator.next();
-        assertEquals( a.getAttribute( "name" ), "Oft_Asked_Questions" );
+        assertEquals( "top", a.getAttribute( "name" ) );
 
         HtmlParagraph p = (HtmlParagraph) elementIterator.next();
         element = elementIterator.next();