This is an automated email from the ASF dual-hosted git repository.
hboutemy pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/maven-doxia.git
commit d65da7e7052e6c133f2a4e5319569019713cba4a
Author: Martin Kurz <mkurz>
AuthorDate: Sun Apr 13 14:34:00 2014 +0100
[DOXIA-497] Fix rendering links and paragraphs inside tables
---
.../org/apache/maven/doxia/module/apt/AptSink.java | 30 ++++++++++--
.../apache/maven/doxia/module/apt/AptSinkTest.java | 54 ++++++++++++++++++++++
2 files changed, 81 insertions(+), 3 deletions(-)
diff --git
a/doxia-modules/doxia-module-apt/src/main/java/org/apache/maven/doxia/module/apt/AptSink.java
b/doxia-modules/doxia-module-apt/src/main/java/org/apache/maven/doxia/module/apt/AptSink.java
index 9746747..3747370 100644
---
a/doxia-modules/doxia-module-apt/src/main/java/org/apache/maven/doxia/module/apt/AptSink.java
+++
b/doxia-modules/doxia-module-apt/src/main/java/org/apache/maven/doxia/module/apt/AptSink.java
@@ -65,6 +65,9 @@ public class AptSink
/** tableCaptionFlag. */
private boolean tableCaptionFlag;
+ /** tableCellFlag. */
+ private boolean tableCellFlag;
+
/** headerFlag. */
private boolean headerFlag;
@@ -164,6 +167,7 @@ public class AptSink
this.date = null;
this.startFlag = true;
this.tableCaptionFlag = false;
+ this.tableCellFlag = false;
this.headerFlag = false;
this.bufferFlag = false;
this.itemFlag = false;
@@ -518,7 +522,11 @@ public class AptSink
/** {@inheritDoc} */
public void paragraph()
{
- if ( itemFlag )
+ if ( tableCellFlag )
+ {
+ // ignore paragraphs in table cells
+ }
+ else if ( itemFlag )
{
write( EOL + EOL + " " + listNestingIndent );
}
@@ -531,7 +539,14 @@ public class AptSink
/** {@inheritDoc} */
public void paragraph_()
{
- write( EOL + EOL );
+ if ( tableCellFlag )
+ {
+ // ignore paragraphs in table cells
+ }
+ else
+ {
+ write( EOL + EOL );
+ }
}
/** {@inheritDoc} */
@@ -696,6 +711,7 @@ public class AptSink
{
buffer.append( TABLE_CELL_SEPARATOR_MARKUP );
}
+ tableCellFlag = true;
}
/** {@inheritDoc} */
@@ -715,6 +731,7 @@ public class AptSink
*/
private void endTableCell()
{
+ tableCellFlag = false;
buffer.append( TABLE_CELL_SEPARATOR_MARKUP );
cellCount++;
}
@@ -928,7 +945,14 @@ public class AptSink
protected void write( String text )
{
startFlag = false;
- writer.write( unifyEOLs( text ) );
+ if ( tableCellFlag )
+ {
+ buffer.append( text );
+ }
+ else
+ {
+ writer.write( unifyEOLs( text ) );
+ }
}
/**
diff --git
a/doxia-modules/doxia-module-apt/src/test/java/org/apache/maven/doxia/module/apt/AptSinkTest.java
b/doxia-modules/doxia-module-apt/src/test/java/org/apache/maven/doxia/module/apt/AptSinkTest.java
index af310e9..812f496 100644
---
a/doxia-modules/doxia-module-apt/src/test/java/org/apache/maven/doxia/module/apt/AptSinkTest.java
+++
b/doxia-modules/doxia-module-apt/src/test/java/org/apache/maven/doxia/module/apt/AptSinkTest.java
@@ -275,4 +275,58 @@ public class AptSinkTest extends AbstractSinkTest
{
return "~~" + text;
}
+
+ /**
+ * test for DOXIA-497.
+ */
+ public void testLinksAndParagraphsInTableCells()
+ {
+ final String linkTarget = "target";
+ final String linkText = "link";
+ final String paragraphText = "paragraph text";
+ final Sink sink = getSink();
+ sink.table();
+ sink.tableRow();
+ sink.tableCell();
+ sink.link(linkTarget);
+ sink.text(linkText);
+ sink.link_();
+ sink.tableCell_();
+ sink.tableCell();
+ sink.paragraph();
+ sink.text(paragraphText);
+ sink.paragraph_();
+ sink.tableCell_();
+ sink.tableRow_();
+ sink.table_();
+ sink.flush();
+ sink.close();
+
+ String expected = EOL + AptMarkup.TABLE_ROW_START_MARKUP +
+ AptMarkup.MINUS +
+ AptMarkup.MINUS +
+ AptMarkup.TABLE_ROW_START_MARKUP +
+ AptMarkup.STAR +
+ EOL +
+ AptMarkup.LEFT_CURLY_BRACKET +
+ AptMarkup.LEFT_CURLY_BRACKET +
+ AptMarkup.LEFT_CURLY_BRACKET +
+ linkTarget +
+ AptMarkup.RIGHT_CURLY_BRACKET +
+ linkText +
+ AptMarkup.RIGHT_CURLY_BRACKET +
+ AptMarkup.RIGHT_CURLY_BRACKET +
+ AptMarkup.TABLE_CELL_SEPARATOR_MARKUP +
+ paragraphText +
+ AptMarkup.TABLE_CELL_SEPARATOR_MARKUP +
+ EOL +
+ AptMarkup.TABLE_ROW_START_MARKUP +
+ AptMarkup.MINUS +
+ AptMarkup.MINUS +
+ AptMarkup.TABLE_ROW_START_MARKUP +
+ AptMarkup.STAR +
+ EOL;
+
+ assertEquals("Wrong link or paragraph markup in table cell", expected,
getSinkContent());
+ }
}