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