Author: ltheussl
Date: Sat May  9 05:15:57 2009
New Revision: 773164

URL: http://svn.apache.org/viewvc?rev=773164&view=rev
Log:
[DOXIA-232] Nested list parsing is not generating correct events
Submitted by: Kornel

Added:
    
maven/doxia/doxia/trunk/doxia-modules/doxia-module-confluence/src/test/resources/nested-list-heterogenous.confluence
Modified:
    
maven/doxia/doxia/trunk/doxia-modules/doxia-module-confluence/src/main/java/org/apache/maven/doxia/module/confluence/parser/list/ListBlockParser.java
    
maven/doxia/doxia/trunk/doxia-modules/doxia-module-confluence/src/test/java/org/apache/maven/doxia/module/confluence/ConfluenceParserTest.java

Modified: 
maven/doxia/doxia/trunk/doxia-modules/doxia-module-confluence/src/main/java/org/apache/maven/doxia/module/confluence/parser/list/ListBlockParser.java
URL: 
http://svn.apache.org/viewvc/maven/doxia/doxia/trunk/doxia-modules/doxia-module-confluence/src/main/java/org/apache/maven/doxia/module/confluence/parser/list/ListBlockParser.java?rev=773164&r1=773163&r2=773164&view=diff
==============================================================================
--- 
maven/doxia/doxia/trunk/doxia-modules/doxia-module-confluence/src/main/java/org/apache/maven/doxia/module/confluence/parser/list/ListBlockParser.java
 (original)
+++ 
maven/doxia/doxia/trunk/doxia-modules/doxia-module-confluence/src/main/java/org/apache/maven/doxia/module/confluence/parser/list/ListBlockParser.java
 Sat May  9 05:15:57 2009
@@ -94,26 +94,24 @@
     private void addItem( TreeListBuilder treeListBuilder, StringBuffer text )
     {
         String item = text.toString();
-        if ( isBulletedList( item ) )
-        {
-            int level = getLevel( item, '*' );
+        int level = getLevel( item );
 
+        if ( isBulletedList( item, level - 1 ) )
+        {
             treeListBuilder.feedEntry( BULLETED_LIST, level, item.substring( 
level ) );
         }
         else
         {
-            int level = getLevel( item, '#' );
-
             treeListBuilder.feedEntry( NUMBERED_LIST, level, item.substring( 
level ) );
         }
         text.setLength( 0 );
     }
 
-    private int getLevel( String line, char c )
+    private int getLevel( String line )
     {
         int level = 0;
 
-        while ( line.charAt( level ) == c )
+        while ( line.charAt( level ) == '*' || line.charAt( level ) == '-' || 
line.charAt( level ) == '#' )
         {
             level++;
         }
@@ -121,9 +119,9 @@
         return level;
     }
 
-    private boolean isBulletedList( String line )
+    private boolean isBulletedList( String line, int deph )
     {
-        return ( line.startsWith( "*" ) || line.startsWith( "-" ) );
+        return ( line.charAt( deph ) == '*' || line.charAt( deph ) == '-' );
     }
 
     private boolean isList( String line )

Modified: 
maven/doxia/doxia/trunk/doxia-modules/doxia-module-confluence/src/test/java/org/apache/maven/doxia/module/confluence/ConfluenceParserTest.java
URL: 
http://svn.apache.org/viewvc/maven/doxia/doxia/trunk/doxia-modules/doxia-module-confluence/src/test/java/org/apache/maven/doxia/module/confluence/ConfluenceParserTest.java?rev=773164&r1=773163&r2=773164&view=diff
==============================================================================
--- 
maven/doxia/doxia/trunk/doxia-modules/doxia-module-confluence/src/test/java/org/apache/maven/doxia/module/confluence/ConfluenceParserTest.java
 (original)
+++ 
maven/doxia/doxia/trunk/doxia-modules/doxia-module-confluence/src/test/java/org/apache/maven/doxia/module/confluence/ConfluenceParserTest.java
 Sat May  9 05:15:57 2009
@@ -155,6 +155,23 @@
     }
 
     /** @throws Exception */
+    public void testNestedHeterogenousList()
+        throws Exception
+    {
+       String result = locateAndParseTestSourceFile( 
"nested-list-heterogenous" );
+
+        // test heterogenous list
+        assertContainsLines( "Nested list not found", result, 
"begin:listItem\ntext: A top level list item\nbegin:numberedList" );
+
+        // exactly one list and one numberedList
+        assertEquals( 2, result.split( "begin:list\n" ).length );
+        assertEquals( 2, result.split( "begin:numberedList" ).length );
+
+        // ...and 4 list items
+        assertEquals( 5, result.split( "end:listItem\n" ).length );
+    }
+
+    /** @throws Exception */
     public void testListWithSimpleFormatting()
         throws Exception
     {

Added: 
maven/doxia/doxia/trunk/doxia-modules/doxia-module-confluence/src/test/resources/nested-list-heterogenous.confluence
URL: 
http://svn.apache.org/viewvc/maven/doxia/doxia/trunk/doxia-modules/doxia-module-confluence/src/test/resources/nested-list-heterogenous.confluence?rev=773164&view=auto
==============================================================================
--- 
maven/doxia/doxia/trunk/doxia-modules/doxia-module-confluence/src/test/resources/nested-list-heterogenous.confluence
 (added)
+++ 
maven/doxia/doxia/trunk/doxia-modules/doxia-module-confluence/src/test/resources/nested-list-heterogenous.confluence
 Sat May  9 05:15:57 2009
@@ -0,0 +1,4 @@
+* A top level list item 
+*# A nested list item 
+*# Another nested list item 
+* Back at the top level


Reply via email to