Author: brett
Date: Thu Dec 29 16:57:31 2005
New Revision: 359951

URL: http://svn.apache.org/viewcvs?rev=359951&view=rev
Log:
add abiity to use leading || for table headers

Modified:
    
maven/doxia/trunk/doxia-core/src/main/java/org/apache/maven/doxia/module/apt/AptParser.java

Modified: 
maven/doxia/trunk/doxia-core/src/main/java/org/apache/maven/doxia/module/apt/AptParser.java
URL: 
http://svn.apache.org/viewcvs/maven/doxia/trunk/doxia-core/src/main/java/org/apache/maven/doxia/module/apt/AptParser.java?rev=359951&r1=359950&r2=359951&view=diff
==============================================================================
--- 
maven/doxia/trunk/doxia-core/src/main/java/org/apache/maven/doxia/module/apt/AptParser.java
 (original)
+++ 
maven/doxia/trunk/doxia-core/src/main/java/org/apache/maven/doxia/module/apt/AptParser.java
 Thu Dec 29 16:57:31 2005
@@ -1755,6 +1755,7 @@
             int rows = 0;
             int columns = 0;
             StringBuffer[] cells = null;
+            boolean[] headers = null;
             boolean grid = false;
 
             AptParser.this.sink.table();
@@ -1790,14 +1791,16 @@
                         justification = parseJustification( line, lineLength );
                         columns = justification.length;
                         cells = new StringBuffer[columns];
+                        headers = new boolean[columns];
                         for ( i = 0; i < columns; ++i )
                         {
                             cells[i] = new StringBuffer();
+                            headers[i] = false;
                         }
                     }
                     else
                     {
-                        if ( traverseRow( cells ) )
+                        if ( traverseRow( cells, headers ) )
                         {
                             ++rows;
                         }
@@ -1812,13 +1815,29 @@
                         AptParser.this.sink.tableRows( justification, grid );
                     }
 
-                    line = replaceAll( ( grid ? line.substring( 1 ) : line ), 
"\\|", "\\174" );
-                    StringTokenizer cellLines = new StringTokenizer( line, "|" 
);
+                    line = replaceAll( line, "\\|", "\\174" );
+
+                    StringTokenizer cellLines = new StringTokenizer( line, 
"|", true );
 
                     i = 0;
+                    boolean processedGrid = false;
                     while ( cellLines.hasMoreTokens() )
                     {
                         String cellLine = cellLines.nextToken();
+                        if ( "|".equals( cellLine ) )
+                        {
+                            if ( processedGrid )
+                            {
+                                headers[i] = true;
+                            }
+                            else
+                            {
+                                processedGrid = true;
+                                headers[i] = false;
+                            }
+                            continue;
+                        }
+                        processedGrid = false;
                         cellLine = replaceAll( cellLine, "\\ ", "\\240" );
                         cellLine = cellLine.trim();
 
@@ -1901,7 +1920,7 @@
             return justification;
         }
 
-        private boolean traverseRow( StringBuffer[] cells )
+        private boolean traverseRow( StringBuffer[] cells, boolean[] headers )
             throws AptParseException
         {
             // Skip empty row (a decorative line).
@@ -1921,13 +1940,27 @@
                 for ( int i = 0; i < cells.length; ++i )
                 {
                     StringBuffer cell = cells[i];
-                    AptParser.this.sink.tableCell();
+                    if ( headers[i] )
+                    {
+                        AptParser.this.sink.tableHeaderCell();
+                    }
+                    else
+                    {
+                        AptParser.this.sink.tableCell();
+                    }
                     if ( cell.length() > 0 )
                     {
                         AptParser.doTraverseText( cell.toString(), 0, 
cell.length(), AptParser.this.sink );
                         cell.setLength( 0 );
                     }
-                    AptParser.this.sink.tableCell_();
+                    if ( headers[i] )
+                    {
+                        AptParser.this.sink.tableHeaderCell_();
+                    }
+                    else
+                    {
+                        AptParser.this.sink.tableCell_();
+                    }
                 }
                 AptParser.this.sink.tableRow_();
             }


Reply via email to