Author: vsiveton Date: Wed May 13 11:00:39 2009 New Revision: 774282 URL: http://svn.apache.org/viewvc?rev=774282&view=rev Log: DOXIA-38: Independent row parsing
o take care of the cell justification o updated test case Modified: maven/doxia/doxia/trunk/doxia-modules/doxia-module-apt/src/main/java/org/apache/maven/doxia/module/apt/AptParser.java maven/doxia/doxia/trunk/doxia-modules/doxia-module-apt/src/test/java/org/apache/maven/doxia/module/apt/AptParserTest.java Modified: maven/doxia/doxia/trunk/doxia-modules/doxia-module-apt/src/main/java/org/apache/maven/doxia/module/apt/AptParser.java URL: http://svn.apache.org/viewvc/maven/doxia/doxia/trunk/doxia-modules/doxia-module-apt/src/main/java/org/apache/maven/doxia/module/apt/AptParser.java?rev=774282&r1=774281&r2=774282&view=diff ============================================================================== --- maven/doxia/doxia/trunk/doxia-modules/doxia-module-apt/src/main/java/org/apache/maven/doxia/module/apt/AptParser.java (original) +++ maven/doxia/doxia/trunk/doxia-modules/doxia-module-apt/src/main/java/org/apache/maven/doxia/module/apt/AptParser.java Wed May 13 11:00:39 2009 @@ -27,6 +27,7 @@ import org.apache.maven.doxia.sink.Sink; import org.apache.maven.doxia.sink.SinkAdapter; import org.apache.maven.doxia.sink.SinkEventAttributeSet; +import org.apache.maven.doxia.sink.SinkEventAttributes; import org.apache.maven.doxia.util.DoxiaUtils; import org.codehaus.plexus.util.IOUtil; @@ -2342,10 +2343,11 @@ } else { - if ( traverseRow( cells, headers ) ) + if ( traverseRow( cells, headers, justification ) ) { ++rows; } + justification = parseJustification( line, lineLength ); } } else @@ -2487,10 +2489,11 @@ * * @param cells The table cells. * @param headers true for header cells. + * @param justification the justification for each cell. * @return boolean * @throws AptParseException if something goes wrong. */ - private boolean traverseRow( StringBuffer[] cells, boolean[] headers ) + private boolean traverseRow( StringBuffer[] cells, boolean[] headers, int[] justification ) throws AptParseException { // Skip empty row (a decorative line). @@ -2510,13 +2513,33 @@ for ( int i = 0; i < cells.length; ++i ) { StringBuffer cell = cells[i]; + + SinkEventAttributes justif; + switch ( justification[i] ) + { + case Sink.JUSTIFY_CENTER: + justif = SinkEventAttributeSet.CENTER; + break; + case Sink.JUSTIFY_LEFT: + justif = SinkEventAttributeSet.LEFT; + break; + case Sink.JUSTIFY_RIGHT: + justif = SinkEventAttributeSet.RIGHT; + break; + default: + justif = SinkEventAttributeSet.LEFT; + break; + } + SinkEventAttributeSet event = new SinkEventAttributeSet(); + event.addAttributes( justif ); + if ( headers[i] ) { - AptParser.this.sink.tableHeaderCell(); + AptParser.this.sink.tableHeaderCell( event ); } else { - AptParser.this.sink.tableCell(); + AptParser.this.sink.tableCell( event ); } if ( cell.length() > 0 ) { Modified: maven/doxia/doxia/trunk/doxia-modules/doxia-module-apt/src/test/java/org/apache/maven/doxia/module/apt/AptParserTest.java URL: http://svn.apache.org/viewvc/maven/doxia/doxia/trunk/doxia-modules/doxia-module-apt/src/test/java/org/apache/maven/doxia/module/apt/AptParserTest.java?rev=774282&r1=774281&r2=774282&view=diff ============================================================================== --- maven/doxia/doxia/trunk/doxia-modules/doxia-module-apt/src/test/java/org/apache/maven/doxia/module/apt/AptParserTest.java (original) +++ maven/doxia/doxia/trunk/doxia-modules/doxia-module-apt/src/test/java/org/apache/maven/doxia/module/apt/AptParserTest.java Wed May 13 11:00:39 2009 @@ -483,55 +483,62 @@ assertEquals( "tableRows", ( (SinkEventElement) it.next() ).getName() ); assertEquals( "tableRow", ( (SinkEventElement) it.next() ).getName() ); - SinkEventElement event = (SinkEventElement) it.next(); assertEquals( "tableCell", event.getName() ); - // DOXIA-38 - //SinkEventAttributeSet atts = (SinkEventAttributeSet) event.getArgs()[0]; - //assertEquals( "center", atts.getAttribute( SinkEventAttributeSet.ALIGN ) ); - assertEquals( "text", ( (SinkEventElement) it.next() ).getName() ); + SinkEventAttributeSet atts = (SinkEventAttributeSet) event.getArgs()[0]; + assertEquals( "center", atts.getAttribute( SinkEventAttributeSet.ALIGN ) ); + SinkEventElement element = (SinkEventElement) it.next(); + assertEquals( "text", element.getName() ); + assertNotNull( element.getArgs()[0] ); + assertEquals( "Centered", element.getArgs()[0] ); assertEquals( "tableCell_", ( (SinkEventElement) it.next() ).getName() ); - event = (SinkEventElement) it.next(); assertEquals( "tableCell", event.getName() ); - // DOXIA-38 - //SinkEventAttributeSet atts = (SinkEventAttributeSet) event.getArgs()[0]; - //assertEquals( "center", atts.getAttribute( SinkEventAttributeSet.ALIGN ) ); - assertEquals( "text", ( (SinkEventElement) it.next() ).getName() ); + atts = (SinkEventAttributeSet) event.getArgs()[0]; + assertEquals( "center", atts.getAttribute( SinkEventAttributeSet.ALIGN ) ); + element = (SinkEventElement) it.next(); + assertEquals( "text", element.getName() ); + assertNotNull( element.getArgs()[0] ); + assertEquals( "Centered", element.getArgs()[0] ); assertEquals( "tableCell_", ( (SinkEventElement) it.next() ).getName() ); - event = (SinkEventElement) it.next(); assertEquals( "tableCell", event.getName() ); - // DOXIA-38 - //SinkEventAttributeSet atts = (SinkEventAttributeSet) event.getArgs()[0]; - //assertEquals( "center", atts.getAttribute( SinkEventAttributeSet.ALIGN ) ); - assertEquals( "text", ( (SinkEventElement) it.next() ).getName() ); + atts = (SinkEventAttributeSet) event.getArgs()[0]; + assertEquals( "center", atts.getAttribute( SinkEventAttributeSet.ALIGN ) ); + element = (SinkEventElement) it.next(); + assertEquals( "text", element.getName() ); + assertNotNull( element.getArgs()[0] ); + assertEquals( "Centered", element.getArgs()[0] ); assertEquals( "tableCell_", ( (SinkEventElement) it.next() ).getName() ); assertEquals( "tableRow_", ( (SinkEventElement) it.next() ).getName() ); assertEquals( "tableRow", ( (SinkEventElement) it.next() ).getName() ); event = (SinkEventElement) it.next(); assertEquals( "tableCell", event.getName() ); - // DOXIA-38 - //SinkEventAttributeSet atts = (SinkEventAttributeSet) event.getArgs()[0]; - //assertEquals( "center", atts.getAttribute( SinkEventAttributeSet.ALIGN ) ); - assertEquals( "text", ( (SinkEventElement) it.next() ).getName() ); + atts = (SinkEventAttributeSet) event.getArgs()[0]; + assertEquals( "center", atts.getAttribute( SinkEventAttributeSet.ALIGN ) ); + element = (SinkEventElement) it.next(); + assertEquals( "text", element.getName() ); + assertNotNull( element.getArgs()[0] ); + assertEquals( "Centered", element.getArgs()[0] ); assertEquals( "tableCell_", ( (SinkEventElement) it.next() ).getName() ); - event = (SinkEventElement) it.next(); assertEquals( "tableCell", event.getName() ); - // DOXIA-38 - //SinkEventAttributeSet atts = (SinkEventAttributeSet) event.getArgs()[0]; - //assertEquals( "left", atts.getAttribute( SinkEventAttributeSet.ALIGN ) ); - assertEquals( "text", ( (SinkEventElement) it.next() ).getName() ); + atts = (SinkEventAttributeSet) event.getArgs()[0]; + assertEquals( "left", atts.getAttribute( SinkEventAttributeSet.ALIGN ) ); + element = (SinkEventElement) it.next(); + assertEquals( "text", element.getName() ); + assertNotNull( element.getArgs()[0] ); + assertEquals( "Left-aligned", element.getArgs()[0] ); assertEquals( "tableCell_", ( (SinkEventElement) it.next() ).getName() ); - event = (SinkEventElement) it.next(); assertEquals( "tableCell", event.getName() ); - // DOXIA-38 - //SinkEventAttributeSet atts = (SinkEventAttributeSet) event.getArgs()[0]; - //assertEquals( "right", atts.getAttribute( SinkEventAttributeSet.ALIGN ) ); - assertEquals( "text", ( (SinkEventElement) it.next() ).getName() ); + atts = (SinkEventAttributeSet) event.getArgs()[0]; + assertEquals( "right", atts.getAttribute( SinkEventAttributeSet.ALIGN ) ); + element = (SinkEventElement) it.next(); + assertEquals( "text", element.getName() ); + assertNotNull( element.getArgs()[0] ); + assertEquals( "Right-aligned", element.getArgs()[0] ); assertEquals( "tableCell_", ( (SinkEventElement) it.next() ).getName() ); assertEquals( "tableRow_", ( (SinkEventElement) it.next() ).getName() );