Author: rfscholte Date: Mon Apr 1 16:03:43 2013 New Revision: 1463173 URL: http://svn.apache.org/r1463173 Log: [DOXIA-467] Confluence: Inconsistent handling of '\' escape characters, incorrect handling of \\ inside {{monospace}} blocks.
Modified: maven/doxia/doxia/trunk/doxia-modules/doxia-module-confluence/src/main/java/org/apache/maven/doxia/module/confluence/parser/ChildBlocksBuilder.java maven/doxia/doxia/trunk/doxia-modules/doxia-module-confluence/src/test/java/org/apache/maven/doxia/module/confluence/ConfluenceParserTest.java maven/doxia/doxia/trunk/doxia-modules/doxia-module-confluence/src/test/resources/escapes.confluence Modified: maven/doxia/doxia/trunk/doxia-modules/doxia-module-confluence/src/main/java/org/apache/maven/doxia/module/confluence/parser/ChildBlocksBuilder.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/ChildBlocksBuilder.java?rev=1463173&r1=1463172&r2=1463173&view=diff ============================================================================== --- maven/doxia/doxia/trunk/doxia-modules/doxia-module-confluence/src/main/java/org/apache/maven/doxia/module/confluence/parser/ChildBlocksBuilder.java (original) +++ maven/doxia/doxia/trunk/doxia-modules/doxia-module-confluence/src/main/java/org/apache/maven/doxia/module/confluence/parser/ChildBlocksBuilder.java Mon Apr 1 16:03:43 2013 @@ -197,7 +197,7 @@ public class ChildBlocksBuilder text = addTextBlockIfNecessary( blocks, specialBlocks, text ); - if ( charAt( input, i ) == '{' ) // it's monospaced + if ( nextChar( input, i ) == '{' ) // it's monospaced { i++; insideMonospaced = true; @@ -209,7 +209,7 @@ public class ChildBlocksBuilder // System.out.println( "line = " + line ); - if ( charAt( input, i ) == '}' ) + if ( nextChar( input, i ) == '}' ) { i++; insideMonospaced = false; @@ -235,17 +235,24 @@ public class ChildBlocksBuilder case '\\': // System.out.println( "line = " + line ); - - if ( charAt( input, i ) == '\\' ) + if ( nextChar( input, i ) == '\\' ) { i++; text = addTextBlockIfNecessary( blocks, specialBlocks, text ); blocks.add( new LinebreakBlock() ); } + else { - i++; - text.append( input.charAt( i ) ); + // DOXIA-467 single trailing backward slash, double is considered linebreak + if( i == input.length() -1 ) + { + text.append( '\\' ); + } + else + { + text.append( input.charAt( ++i ) ); + } } break; @@ -312,7 +319,7 @@ public class ChildBlocksBuilder return list; } - private static char charAt( String input, int i ) + private static char nextChar( String input, int i ) { return input.length() > i + 1 ? input.charAt( i + 1 ) : '\0'; } 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=1463173&r1=1463172&r2=1463173&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 Mon Apr 1 16:03:43 2013 @@ -135,6 +135,7 @@ public class ConfluenceParserTest assertContainsLines( result, "asterisk *not bold*" ); assertContainsLines( result, "underline _not italic_" ); assertContainsLines( result, "normal character" ); + assertContainsLines( result, "trailing slash\\\n" ); } /** @throws Exception */ Modified: maven/doxia/doxia/trunk/doxia-modules/doxia-module-confluence/src/test/resources/escapes.confluence URL: http://svn.apache.org/viewvc/maven/doxia/doxia/trunk/doxia-modules/doxia-module-confluence/src/test/resources/escapes.confluence?rev=1463173&r1=1463172&r2=1463173&view=diff ============================================================================== --- maven/doxia/doxia/trunk/doxia-modules/doxia-module-confluence/src/test/resources/escapes.confluence (original) +++ maven/doxia/doxia/trunk/doxia-modules/doxia-module-confluence/src/test/resources/escapes.confluence Mon Apr 1 16:03:43 2013 @@ -1,6 +1,7 @@ -Simple paragraph with asterisk \* and underline \_. - -Simple paragraph with asterisk \*not bold\* and underline \_not italic\_. - -Simple paragraph with normal \character escaped. - +Simple paragraph with asterisk \* and underline \_. + +Simple paragraph with asterisk \*not bold\* and underline \_not italic\_. + +Simple paragraph with normal \character escaped. + +With trailing slash\