Author: ltheussl
Date: Sat Nov 17 14:08:57 2007
New Revision: 596011

URL: http://svn.apache.org/viewvc?rev=596011&view=rev
Log:
AptParser should not emit paragraphs around list items. Fix definition list 
handling in the sink. Add comment parsing.

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/main/java/org/apache/maven/doxia/module/apt/AptSink.java
    
maven/doxia/doxia/trunk/doxia-modules/doxia-module-apt/src/test/java/org/apache/maven/doxia/module/apt/AptSinkTest.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=596011&r1=596010&r2=596011&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
 Sat Nov 17 14:08:57 2007
@@ -100,10 +100,13 @@
     /** Macro event id */
     private static final int MACRO = 16;
 
+    /** Comment event id. */
+    private static final int COMMENT_BLOCK = 17;
+    
     /** String representations of event ids */
     private static final String TYPE_NAMES[] = {"TITLE", "SECTION1", 
"SECTION2", "SECTION3", "SECTION4", "SECTION5",
         "PARAGRAPH", "VERBATIM", "FIGURE", "TABLE", "LIST_ITEM", 
"NUMBERED_LIST_ITEM", "DEFINITION_LIST_ITEM",
-        "HORIZONTAL_RULE", "PAGE_BREAK", "LIST_BREAK", "MACRO"};
+        "HORIZONTAL_RULE", "PAGE_BREAK", "LIST_BREAK", "MACRO", 
"COMMENT_BLOCK"};
 
     /** An array of spaces. */
     private static final char SPACES[] = {' ', ' ', ' ', ' ', ' ', ' ', ' ', ' 
', ' ', ' ', ' ', ' ', ' ', ' ', ' ',
@@ -355,6 +358,7 @@
                 case HORIZONTAL_RULE:
                 case PAGE_BREAK:
                 case MACRO:
+                case COMMENT_BLOCK:
                     block.traverse();
                     nextBlock();
                     break;
@@ -732,17 +736,6 @@
                     case TAB:
                         indent += 8;
                         break;
-                    case COMMENT:
-                        if ( charAt( line, length, i + 1 ) == COMMENT )
-                        {
-                            // Comment.
-                            i = length;
-                            break lineLoop;
-                        }
-                        else
-                        {
-                            break skipLoop;
-                        }
                     default:
                         break skipLoop;
                 }
@@ -869,7 +862,9 @@
                     block = new HorizontalRule( indent, line );
                 }
                 break;
+            // TODO: this doesn't work?
             case PAGE_BREAK:
+            case '\f':
                 if ( indent == 0 )
                 {
                     block = new PageBreak( indent, line );
@@ -881,6 +876,12 @@
                     block = new MacroBlock( indent, line );
                 }
                 break;
+            case COMMENT:
+                if ( indent == 0 && charAt( line, length, i + 1 ) == COMMENT )
+                {
+                    block = new Comment( line.substring( 2 ).trim() );
+                }
+                break;
             default:
                 break;
         }
@@ -2047,6 +2048,31 @@
         }
     }
 
+    /** A Comment Block. */
+    private class Comment
+        extends Block
+    {
+        /**
+         * Constructor.
+         *
+         * @param indent indent.
+         * @param firstLine the comment line.
+         * @throws AptParseException AptParseException
+         */
+        public Comment( String line )
+            throws AptParseException
+        {
+            super( COMMENT_BLOCK, 0, line );
+        }
+
+        /** [EMAIL PROTECTED] */
+        public void traverse()
+            throws AptParseException
+        {
+            AptParser.this.sink.comment( text );
+        }
+    }
+
     /** A Verbatim Block. */
     private class Verbatim
         extends Block
@@ -2135,6 +2161,7 @@
             throws AptParseException
         {
             AptParser.this.sink.verbatim( boxed );
+            // TODO: filter out lineBreak
             AptParser.this.sink.text( text );
             AptParser.this.sink.verbatim_();
         }
@@ -2466,9 +2493,7 @@
         public void traverse()
             throws AptParseException
         {
-            AptParser.this.sink.paragraph();
             traverseText( skipLeadingBullets() );
-            AptParser.this.sink.paragraph_();
         }
     }
 
@@ -2510,9 +2535,7 @@
         public void traverse()
             throws AptParseException
         {
-            AptParser.this.sink.paragraph();
             traverseText( skipItemNumber() );
-            AptParser.this.sink.paragraph_();
         }
 
         /**
@@ -2578,13 +2601,12 @@
             j = skipSpaceFrom( j + 1 );
             if ( j == textLength )
             {
-                throw new AptParseException( "no definition" );
+                // TODO: this doesn't handle the case of a dd in a paragraph
+                //throw new AptParseException( "no definition" );
             }
 
             AptParser.this.sink.definition();
-            AptParser.this.sink.paragraph();
             traverseText( j );
-            AptParser.this.sink.paragraph_();
         }
     }
 

Modified: 
maven/doxia/doxia/trunk/doxia-modules/doxia-module-apt/src/main/java/org/apache/maven/doxia/module/apt/AptSink.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/AptSink.java?rev=596011&r1=596010&r2=596011&view=diff
==============================================================================
--- 
maven/doxia/doxia/trunk/doxia-modules/doxia-module-apt/src/main/java/org/apache/maven/doxia/module/apt/AptSink.java
 (original)
+++ 
maven/doxia/doxia/trunk/doxia-modules/doxia-module-apt/src/main/java/org/apache/maven/doxia/module/apt/AptSink.java
 Sat Nov 17 14:08:57 2007
@@ -351,6 +351,7 @@
     public void listItem_()
     {
         write( EOL );
+        itemFlag = false;
     }
 
     /** [EMAIL PROTECTED] */
@@ -419,18 +420,30 @@
     public void numberedListItem_()
     {
         write( EOL );
+        itemFlag = false;
     }
 
     /** [EMAIL PROTECTED] */
     public void definitionList()
     {
+        listNestingIndent += " ";
+        listStyles.push( "" );
         write( EOL );
     }
 
     /** [EMAIL PROTECTED] */
     public void definitionList_()
     {
-        write( EOL );
+        if ( listNestingIndent.length() <= 1 )
+        {
+            write( EOL + listNestingIndent + LIST_END_MARKUP + EOL );
+        }
+        else
+        {
+            write( EOL );
+        }
+        listNestingIndent = StringUtils.chomp( listNestingIndent, " " );
+        listStyles.pop();
         itemFlag = false;
     }
 
@@ -443,7 +456,7 @@
     /** [EMAIL PROTECTED] */
     public void definedTerm_()
     {
-        write( "]" );
+        write( "] " );
     }
 
     /** [EMAIL PROTECTED] */
@@ -456,6 +469,7 @@
     public void definition_()
     {
         write( EOL );
+        itemFlag = false;
     }
 
     /** [EMAIL PROTECTED] */
@@ -467,7 +481,11 @@
     /** [EMAIL PROTECTED] */
     public void paragraph()
     {
-        if ( !itemFlag )
+        if ( itemFlag )
+        {
+            write( EOL + EOL + "  " + listNestingIndent );
+        }
+        else
         {
             write( EOL + " " );
         }
@@ -476,14 +494,7 @@
     /** [EMAIL PROTECTED] */
     public void paragraph_()
     {
-        if ( itemFlag )
-        {
-            itemFlag = false;
-        }
-        else
-        {
-            write( EOL + EOL );
-        }
+        write( EOL + EOL );
     }
 
     /** [EMAIL PROTECTED] */
@@ -491,6 +502,7 @@
     {
         verbatimFlag = true;
         this.boxed = boxed;
+        write( EOL );
         if ( boxed )
         {
             write( EOL + BOXED_VERBATIM_START_MARKUP + EOL );
@@ -807,6 +819,10 @@
         {
             buffer.append( EOL );
         }
+        else if ( verbatimFlag )
+        {
+            write( EOL );
+        }
         else
         {
             write( "\\" + EOL );
@@ -856,7 +872,7 @@
     /** [EMAIL PROTECTED] */
     public void comment( String comment )
     {
-        rawText( EOL + "~~ " + comment );
+        rawText( EOL + COMMENT + COMMENT + SPACE + comment.trim() );
     }
 
 

Modified: 
maven/doxia/doxia/trunk/doxia-modules/doxia-module-apt/src/test/java/org/apache/maven/doxia/module/apt/AptSinkTest.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/AptSinkTest.java?rev=596011&r1=596010&r2=596011&view=diff
==============================================================================
--- 
maven/doxia/doxia/trunk/doxia-modules/doxia-module-apt/src/test/java/org/apache/maven/doxia/module/apt/AptSinkTest.java
 (original)
+++ 
maven/doxia/doxia/trunk/doxia-modules/doxia-module-apt/src/test/java/org/apache/maven/doxia/module/apt/AptSinkTest.java
 Sat Nov 17 14:08:57 2007
@@ -132,7 +132,8 @@
     protected String getDefinitionListBlock( String definum, String definition 
)
     {
         return Markup.SPACE + "" + Markup.LEFT_SQUARE_BRACKET + definum
-            + Markup.RIGHT_SQUARE_BRACKET + "" + definition;
+            + Markup.RIGHT_SQUARE_BRACKET + "" + Markup.SPACE + definition
+            + Markup.SPACE + "" + Markup.LEFT_SQUARE_BRACKET + "" + 
Markup.RIGHT_SQUARE_BRACKET;
     }
 
     /** [EMAIL PROTECTED] */


Reply via email to