Index: src/test/java/org/apache/maven/doxia/module/confluence/ConfluenceParserTest.java =================================================================== --- src/test/java/org/apache/maven/doxia/module/confluence/ConfluenceParserTest.java (revision 773079) +++ src/test/java/org/apache/maven/doxia/module/confluence/ConfluenceParserTest.java (working copy) @@ -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 { Index: src/test/resources/nested-list-heterogenous.confluence =================================================================== --- src/test/resources/nested-list-heterogenous.confluence (revision 0) +++ src/test/resources/nested-list-heterogenous.confluence (revision 0) @@ -0,0 +1,4 @@ +* A top level list item +*# A nested list item +*# Another nested list item +* Back at the top level Index: src/main/java/org/apache/maven/doxia/module/confluence/parser/list/ListBlockParser.java =================================================================== --- src/main/java/org/apache/maven/doxia/module/confluence/parser/list/ListBlockParser.java (revision 773079) +++ src/main/java/org/apache/maven/doxia/module/confluence/parser/list/ListBlockParser.java (working copy) @@ -94,26 +94,20 @@ 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 +115,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 )