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\


Reply via email to