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() 
);
 


Reply via email to