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}