Author: ltheussl
Date: Tue May 19 10:06:09 2009
New Revision: 776258

URL: http://svn.apache.org/viewvc?rev=776258&view=rev
Log:
[DOXIASITETOOLS-24] SiteRendererSink swallows formatting in section titles. 
Also fix anchor generation for section titles.

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/EntitiesVerifier.java
    
maven/doxia/doxia-sitetools/trunk/doxia-site-renderer/src/test/java/org/apache/maven/doxia/siterenderer/FaqVerifier.java
    
maven/doxia/doxia-sitetools/trunk/doxia-site-renderer/src/test/java/org/apache/maven/doxia/siterenderer/NestedItemsVerifier.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=776258&r1=776257&r2=776258&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
 Tue May 19 10:06:09 2009
@@ -25,7 +25,6 @@
 import java.util.List;
 
 import javax.swing.text.html.HTML.Attribute;
-import javax.swing.text.html.HTML.Tag;
 
 import org.apache.maven.doxia.module.xhtml.XhtmlSink;
 import org.apache.maven.doxia.sink.render.RenderingContext;
@@ -53,6 +52,8 @@
 
     private final StringWriter headWriter;
 
+    private StringBuffer sectionTitleBuffer;
+
     private boolean sectionHasID;
 
     private final Writer writer;
@@ -216,105 +217,32 @@
         setHeadFlag( true );
     }
 
-
     /** {...@inheritdoc} */
-    public void sectionTitle( int level, SinkEventAttributes attributes )
+    protected void onSectionTitle( int depth, SinkEventAttributes attributes )
     {
-        if ( level == SECTION_LEVEL_1 || level == SECTION_LEVEL_2 )
-        {
-            // TODO: why are section titles written in head mode?
-            setHeadFlag( true );
+        this.sectionTitleBuffer = new StringBuffer();
+        sectionHasID = ( attributes != null && attributes.isDefined ( 
Attribute.ID.toString() ) );
 
-            sectionHasID = ( attributes != null && attributes.isDefined ( 
Attribute.ID.toString() ) );
-        }
-        else
-        {
-            super.sectionTitle( level, attributes );
-        }
+        super.onSectionTitle( depth, attributes );
     }
 
     /** {...@inheritdoc} */
-    public void sectionTitle_( int level )
+    protected void onSectionTitle_( int depth )
     {
-        if ( level == SECTION_LEVEL_1 || level == SECTION_LEVEL_2 )
-        {
-            String sectionTitle = "";
-
-            if ( getTextBuffer().length() > 0 )
-            {
-                sectionTitle = getTextBuffer().toString();
-            }
-
-            resetTextBuffer();
-
-            // TODO: why are section titles written in head mode?
-            setHeadFlag( false );
-
-            writeStartTag( level == SECTION_LEVEL_1 ? Tag.H2 : Tag.H3  );
+        String sectionTitle = sectionTitleBuffer.toString();
+        this.sectionTitleBuffer = null;
 
-            if ( !sectionHasID && !StringUtils.isEmpty( sectionTitle ) )
-            {
-                anchor( HtmlTools.encodeId( sectionTitle ) );
-                anchor_();
-            }
-            else
-            {
-                sectionHasID = false;
-            }
-
-            text( sectionTitle );
-            writeEndTag( level == SECTION_LEVEL_1 ? Tag.H2 : Tag.H3 );
+        if ( !sectionHasID && !StringUtils.isEmpty( sectionTitle ) )
+        {
+            anchor( HtmlTools.encodeId( sectionTitle ) );
+            anchor_();
         }
         else
         {
-            super.sectionTitle_( level );
+            sectionHasID = false;
         }
-    }
 
-    /**
-     * {...@inheritdoc}
-     *
-     * Sets the head flag to true so the title text is buffered until the 
closing tag.
-     * @see org.apache.maven.doxia.sink.XhtmlBaseSink#sectionTitle1()
-     */
-    public void sectionTitle1()
-    {
-        sectionTitle( SECTION_LEVEL_1, null );
-    }
-
-    /**
-     * {...@inheritdoc}
-     *
-     * Writes out a sectionTitle1 block, including an anchor that is 
constructed from the
-     * buffered title text via {...@link 
org.apache.maven.doxia.util.HtmlTools#encodeId(String)}.
-     * @see org.apache.maven.doxia.sink.XhtmlBaseSink#sectionTitle1_()
-     */
-    public void sectionTitle1_()
-    {
-        sectionTitle_( SECTION_LEVEL_1 );
-    }
-
-    /**
-     * {...@inheritdoc}
-     *
-     * Sets the head flag to true so the title text is buffered until the 
closing tag.
-     * @see org.apache.maven.doxia.sink.XhtmlBaseSink#sectionTitle2()
-     */
-    public void sectionTitle2()
-    {
-        sectionTitle( SECTION_LEVEL_2, null );
-    }
-
-    /**
-     * {...@inheritdoc}
-     *
-     * Writes out a sectionTitle2 block, including an anchor that is 
constructed from the
-     * buffered title text via {...@link 
org.apache.maven.doxia.util.HtmlTools#encodeId(String)}.
-     * @see org.apache.maven.doxia.sink.XhtmlBaseSink#sectionTitle2_()
-     */
-    public void sectionTitle2_()
-    {
-        sectionTitle_( SECTION_LEVEL_2 );
+        super.onSectionTitle_( depth );
     }
 
     /**
@@ -329,6 +257,18 @@
     }
 
     /** {...@inheritdoc} */
+    public void text( String text )
+    {
+        if ( sectionTitleBuffer != null )
+        {
+            // this implies we're inside a section title, collect text events 
for anchor generation
+            sectionTitleBuffer.append( text );
+        }
+
+        super.text( text );
+    }
+
+    /** {...@inheritdoc} */
     protected void write( String text )
     {
         if ( isHeadFlag() )

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=776258&r1=776257&r2=776258&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
 Tue May 19 10:06:09 2009
@@ -23,14 +23,16 @@
 import com.gargoylesoftware.htmlunit.html.HtmlDivision;
 import com.gargoylesoftware.htmlunit.html.HtmlElement;
 import com.gargoylesoftware.htmlunit.html.HtmlHeader2;
+import com.gargoylesoftware.htmlunit.html.HtmlHeader3;
 import com.gargoylesoftware.htmlunit.html.HtmlPage;
 import com.gargoylesoftware.htmlunit.html.HtmlParagraph;
+import com.gargoylesoftware.htmlunit.html.UnknownHtmlElement;
 
 import java.util.Iterator;
 
 
 /**
- * 
+ * Verifies apt transformations.
  *
  * @author ltheussl
  * @version $Id$
@@ -98,5 +100,64 @@
 
         a = (HtmlAnchor) elementIterator.next();
         assertEquals( "/index.html", a.getAttributeValue( "href" ) );
+
+        div = (HtmlDivision) elementIterator.next();
+        assertEquals( "section", div.getAttributeValue( "class" ) );
+
+        h2 = (HtmlHeader2) elementIterator.next();
+        assertNotNull( h2 );
+        assertEquals( "Section formatting: italic bold mono", 
h2.asText().trim() );
+
+        UnknownHtmlElement unknown = (UnknownHtmlElement) 
elementIterator.next();
+        assertEquals( "i", unknown.getTagName() );
+        assertEquals( "italic", unknown.asText().trim() );
+
+        unknown = (UnknownHtmlElement) elementIterator.next();
+        assertEquals( "b", unknown.getTagName() );
+        assertEquals( "bold", unknown.asText().trim() );
+
+        unknown = (UnknownHtmlElement) elementIterator.next();
+        assertEquals( "tt", unknown.getTagName() );
+        assertEquals( "mono", unknown.asText().trim() );
+
+        a = (HtmlAnchor) elementIterator.next();
+        assertEquals( "Section_formatting:_italic_bold_mono", 
a.getAttributeValue( "name" ) );
+
+        div = (HtmlDivision) elementIterator.next();
+        assertEquals( "section", div.getAttributeValue( "class" ) );
+
+        HtmlHeader3 h3 = (HtmlHeader3) elementIterator.next();
+        assertNotNull( h3 );
+        assertEquals( "SubSection formatting: italic bold mono", 
h3.asText().trim() );
+
+        unknown = (UnknownHtmlElement) elementIterator.next();
+        assertEquals( "i", unknown.getTagName() );
+        assertEquals( "italic", unknown.asText().trim() );
+
+        unknown = (UnknownHtmlElement) elementIterator.next();
+        assertEquals( "b", unknown.getTagName() );
+        assertEquals( "bold", unknown.asText().trim() );
+
+        unknown = (UnknownHtmlElement) elementIterator.next();
+        assertEquals( "tt", unknown.getTagName() );
+        assertEquals( "mono", unknown.asText().trim() );
+
+        a = (HtmlAnchor) elementIterator.next();
+        assertEquals( "SubSection_formatting:_italic_bold_mono", 
a.getAttributeValue( "name" ) );
+
+        p = (HtmlParagraph) elementIterator.next();
+        assertNotNull( p );
+
+        unknown = (UnknownHtmlElement) elementIterator.next();
+        assertEquals( "i", unknown.getTagName() );
+        assertEquals( "italic", unknown.asText().trim() );
+
+        unknown = (UnknownHtmlElement) elementIterator.next();
+        assertEquals( "b", unknown.getTagName() );
+        assertEquals( "bold", unknown.asText().trim() );
+
+        unknown = (UnknownHtmlElement) elementIterator.next();
+        assertEquals( "tt", unknown.getTagName() );
+        assertEquals( "mono", unknown.asText().trim() );
     }
 }

Modified: 
maven/doxia/doxia-sitetools/trunk/doxia-site-renderer/src/test/java/org/apache/maven/doxia/siterenderer/EntitiesVerifier.java
URL: 
http://svn.apache.org/viewvc/maven/doxia/doxia-sitetools/trunk/doxia-site-renderer/src/test/java/org/apache/maven/doxia/siterenderer/EntitiesVerifier.java?rev=776258&r1=776257&r2=776258&view=diff
==============================================================================
--- 
maven/doxia/doxia-sitetools/trunk/doxia-site-renderer/src/test/java/org/apache/maven/doxia/siterenderer/EntitiesVerifier.java
 (original)
+++ 
maven/doxia/doxia-sitetools/trunk/doxia-site-renderer/src/test/java/org/apache/maven/doxia/siterenderer/EntitiesVerifier.java
 Tue May 19 10:06:09 2009
@@ -123,6 +123,10 @@
         assertNotNull( h4 );
         assertEquals( h4.asText().trim(), "Entities" );
 
+        a = (HtmlAnchor) elementIterator.next();
+        assertNotNull( a );
+        assertEquals( a.getAttributeValue( "name" ), "Entities" );
+
         div = (HtmlDivision) elementIterator.next();
 
         HtmlHeader3 h3 = (HtmlHeader3) elementIterator.next();
@@ -167,6 +171,10 @@
         assertNotNull( h4 );
         assertEquals( h4.asText().trim(), "CDATA" );
 
+        a = (HtmlAnchor) elementIterator.next();
+        assertNotNull( a );
+        assertEquals( a.getAttributeValue( "name" ), "CDATA" );
+
         div = (HtmlDivision) elementIterator.next();
         assertNotNull( div );
         assertEquals( div.getAttributeValue( "class" ), "source" );

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=776258&r1=776257&r2=776258&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
 Tue May 19 10:06:09 2009
@@ -69,6 +69,9 @@
         assertEquals( h2.asText().trim(), "Oft Asked Questions" );
 
         HtmlAnchor a = (HtmlAnchor) elementIterator.next();
+        assertEquals( a.getAttributeValue( "name" ), "top" );
+
+        a = (HtmlAnchor) elementIterator.next();
         assertEquals( a.getAttributeValue( "name" ), "Oft_Asked_Questions" );
 
         HtmlParagraph p = (HtmlParagraph) elementIterator.next();

Modified: 
maven/doxia/doxia-sitetools/trunk/doxia-site-renderer/src/test/java/org/apache/maven/doxia/siterenderer/NestedItemsVerifier.java
URL: 
http://svn.apache.org/viewvc/maven/doxia/doxia-sitetools/trunk/doxia-site-renderer/src/test/java/org/apache/maven/doxia/siterenderer/NestedItemsVerifier.java?rev=776258&r1=776257&r2=776258&view=diff
==============================================================================
--- 
maven/doxia/doxia-sitetools/trunk/doxia-site-renderer/src/test/java/org/apache/maven/doxia/siterenderer/NestedItemsVerifier.java
 (original)
+++ 
maven/doxia/doxia-sitetools/trunk/doxia-site-renderer/src/test/java/org/apache/maven/doxia/siterenderer/NestedItemsVerifier.java
 Tue May 19 10:06:09 2009
@@ -90,6 +90,10 @@
         assertNotNull( h4 );
         assertEquals( h4.asText().trim(), "Unordered lists" );
 
+        a = (HtmlAnchor) elementIterator.next();
+        assertNotNull( a );
+        assertEquals( a.getAttributeValue( "name" ), "Unordered_lists" );
+
         HtmlParagraph p = (HtmlParagraph) elementIterator.next();
         assertNotNull( p );
         assertEquals( p.asText().trim(), "Below is an unordered list, followed 
by six paragraphs." );
@@ -176,6 +180,10 @@
         assertNotNull( h4 );
         assertEquals( h4.asText().trim(), "Ordered lists" );
 
+        a = (HtmlAnchor) elementIterator.next();
+        assertNotNull( a );
+        assertEquals( a.getAttributeValue( "name" ), "Ordered_lists" );
+
         p = (HtmlParagraph) elementIterator.next();
         assertNotNull( p );
         assertEquals( p.asText().trim(), "Below is an ordered list, followed 
by six paragraphs." );
@@ -258,6 +266,10 @@
         assertNotNull( h4 );
         assertEquals( h4.asText().trim(), "Definition lists" );
 
+        a = (HtmlAnchor) elementIterator.next();
+        assertNotNull( a );
+        assertEquals( a.getAttributeValue( "name" ), "Definition_lists" );
+
         p = (HtmlParagraph) elementIterator.next();
         assertNotNull( p );
         assertEquals( p.asText().trim(), "Below is a definition list, followed 
by six paragraphs." );

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=776258&r1=776257&r2=776258&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
 Tue May 19 10:06:09 2009
@@ -38,6 +38,12 @@
   Link to {{{./cdc.html}other document}} and within {{{cdc.html}same 
document}}.
   Link to {{{/index.html}root document}}.
 
+Section formatting: <italic> <<bold>> <<<mono>>>
+
+* SubSection formatting: <italic> <<bold>> <<<mono>>>
+
+  <italic> <<bold>> <<<mono>>>
+
 TOC Macro
 
 %{toc}


Reply via email to