Author: rfscholte
Date: Sat Jan 23 20:25:03 2016
New Revision: 1726451
URL: http://svn.apache.org/viewvc?rev=1726451&view=rev
Log:
[DOXIA-508] Format characters are interpreted in monospaced text
Patch provided by Mark Schenk, review and adjusted by Robert Scholte
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/nested-format.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=1726451&r1=1726450&r2=1726451&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
Sat Jan 23 20:25:03 2016
@@ -89,6 +89,10 @@ public class ChildBlocksBuilder
specialBlocks = getList( new BoldBlock( getChildren(
text, specialBlocks ) ), specialBlocks );
text = new StringBuilder();
}
+ else if ( insideMonospaced )
+ {
+ text.append( c );
+ }
else
{
text = addTextBlockIfNecessary( blocks, specialBlocks,
text );
@@ -103,9 +107,9 @@ public class ChildBlocksBuilder
specialBlocks = getList( new ItalicBlock( getChildren(
text, specialBlocks ) ), specialBlocks );
text = new StringBuilder();
}
- else if ( insideLink )
+ else if ( insideLink || insideMonospaced )
{
- text.append( '_' );
+ text.append( c );
}
else
{
@@ -121,7 +125,7 @@ public class ChildBlocksBuilder
blocks.add( new LinethroughBlock( text.toString() ) );
text = new StringBuilder();
}
- else if ( insideLink )
+ else if ( insideLink || insideMonospaced )
{
text.append( c );
}
@@ -138,7 +142,7 @@ public class ChildBlocksBuilder
blocks.add( new UnderlineBlock( text.toString() ) );
text = new StringBuilder();
}
- else if ( insideLink )
+ else if ( insideLink || insideMonospaced )
{
text.append( c );
}
@@ -155,7 +159,7 @@ public class ChildBlocksBuilder
blocks.add( new SubBlock( text.toString() ) );
text = new StringBuilder();
}
- else if ( insideLink )
+ else if ( insideLink || insideMonospaced )
{
text.append( c );
}
@@ -172,7 +176,7 @@ public class ChildBlocksBuilder
blocks.add( new SupBlock( text.toString() ) );
text = new StringBuilder();
}
- else if ( insideLink )
+ else if ( insideLink || insideMonospaced )
{
text.append( c );
}
@@ -183,8 +187,15 @@ public class ChildBlocksBuilder
}
break;
case '[':
- insideLink = true;
- text = addTextBlockIfNecessary( blocks, specialBlocks,
text );
+ if ( insideMonospaced )
+ {
+ text.append( c );
+ }
+ else
+ {
+ insideLink = true;
+ text = addTextBlockIfNecessary( blocks, specialBlocks,
text );
+ }
break;
case ']':
if ( insideLink )
@@ -269,24 +280,31 @@ public class ChildBlocksBuilder
text = new StringBuilder();
insideLink = false;
}
+ else if ( insideMonospaced )
+ {
+ text.append( c );
+ }
break;
case '{':
-
- text = addTextBlockIfNecessary( blocks, specialBlocks,
text );
-
- if ( nextChar( input, i ) == '{' ) // it's monospaced
+ if ( insideMonospaced )
{
- i++;
- insideMonospaced = true;
+ text.append( c );
+ }
+ else
+ {
+ text = addTextBlockIfNecessary( blocks, specialBlocks,
text );
+
+ if ( nextChar( input, i ) == '{' ) // it's monospaced
+ {
+ i++;
+ insideMonospaced = true;
+ }
}
// else it's a confluence macro...
break;
case '}':
-
- // System.out.println( "line = " + line );
-
if ( nextChar( input, i ) == '}' )
{
i++;
@@ -295,6 +313,10 @@ public class ChildBlocksBuilder
specialBlocks );
text = new StringBuilder();
}
+ else if ( insideMonospaced )
+ {
+ text.append( c );
+ }
else
{
String name = text.toString();
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=1726451&r1=1726450&r2=1726451&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 Jan 23 20:25:03 2016
@@ -408,14 +408,24 @@ public class ConfluenceParserTest
assertContainsLines( result, "text: A paragraph with
\nbegin:bold\ntext: bold \nbegin:italic\ntext: italic\nend:italic" );
assertContainsLines( result, "begin:italic\ntext: italic
\nbegin:bold\ntext: bold\nend:bold" );
assertContainsLines( result, "begin:bold\ntext: bold
\nbegin:monospaced\ntext: monospaced\nend:monospaced" );
- // 2 paragraphs in the input...
- assertEquals( 3, result.split( "end:paragraph\n" ).length );
+ assertContainsLines( result, "begin:monospaced\ntext:
monospaced-with-dashes\nend:monospaced");
+ assertContainsLines( result, "begin:monospaced\ntext:
monospaced_with_underscores\nend:monospaced");
+ assertContainsLines( result, "begin:monospaced\ntext:
monospaced*with*stars\nend:monospaced");
+ assertContainsLines( result, "begin:monospaced\ntext:
monospaced+with+plus\nend:monospaced");
+ assertContainsLines( result, "begin:monospaced\ntext:
monospaced~with~tilde\nend:monospaced");
+ assertContainsLines( result, "begin:monospaced\ntext:
monospaced^with^circumflex^accent\nend:monospaced");
+ assertContainsLines( result, "begin:monospaced\ntext:
monospaced[with]brackets\nend:monospaced");
+ assertContainsLines( result, "begin:monospaced\ntext:
monospaced{with}curly{brackets\nend:monospaced");
+ assertContainsLines( result, "begin:monospaced\ntext:
monospaced\\\\\\with\\\\backslashes\nend:monospaced");
+
+ // 3 paragraphs in the input...
+ assertEquals( 4, result.split( "end:paragraph\n" ).length );
// 6 bolds in the input...
assertEquals( 7, result.split( "end:bold\n" ).length );
// 4 italics in the input...
assertEquals( 5, result.split( "end:italic\n" ).length );
- // 2 monospaced in the input...
- assertEquals( 3, result.split( "end:monospaced\n" ).length );
+ // 11 monospaced in the input...
+ assertEquals( 12, result.split( "end:monospaced\n" ).length );
}
/** @throws Exception */
Modified:
maven/doxia/doxia/trunk/doxia-modules/doxia-module-confluence/src/test/resources/nested-format.confluence
URL:
http://svn.apache.org/viewvc/maven/doxia/doxia/trunk/doxia-modules/doxia-module-confluence/src/test/resources/nested-format.confluence?rev=1726451&r1=1726450&r2=1726451&view=diff
==============================================================================
---
maven/doxia/doxia/trunk/doxia-modules/doxia-module-confluence/src/test/resources/nested-format.confluence
(original)
+++
maven/doxia/doxia/trunk/doxia-modules/doxia-module-confluence/src/test/resources/nested-format.confluence
Sat Jan 23 20:25:03 2016
@@ -3,4 +3,6 @@ A paragraph with *_bold italic_* _*itali
A paragraph with *bold _italic_* _italic *bold*_ *bold {{monospaced}}*
+A paragraph with {{monospaced-with-dashes}} {{monospaced_with_underscores}}
{{monospaced*with*stars}} {{monospaced+with+plus}} {{monospaced~with~tilde}}
{{monospaced^with^circumflex^accent}} {{monospaced[with]brackets}}
{{monospaced{with}curly{brackets}} {{monospaced\\\with\\backslashes}}
+