[DOXIA-170] Confluence module should do something with non-doxia formatting 


git-svn-id: https://svn.apache.org/repos/asf/maven/doxia/doxia/trunk@1465304 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/doxia-modules/doxia-module-confluence/src/main/java/org/apache/maven/doxia/module/confluence/ConfluenceMarkup.java b/doxia-modules/doxia-module-confluence/src/main/java/org/apache/maven/doxia/module/confluence/ConfluenceMarkup.java
index 5228685..e6a8b51 100644
--- a/doxia-modules/doxia-module-confluence/src/main/java/org/apache/maven/doxia/module/confluence/ConfluenceMarkup.java
+++ b/doxia-modules/doxia-module-confluence/src/main/java/org/apache/maven/doxia/module/confluence/ConfluenceMarkup.java
@@ -86,6 +86,24 @@
     /** Syntax for the numbering decimal markup char: "#" */
     String NUMBERING_MARKUP = "#";
 
+    /** Syntax for the strikethrough markup start: "-" */
+    String STRIKETHROUGH_START_MARKUP = "-";
+
+    /** Syntax for the strikethrough markup end: "-" */
+    String STRIKETHROUGH_END_MARKUP = "-";
+
+    /** Syntax for the subscript markup start: "-" */
+    String SUBSCRIPT_START_MARKUP = "~";
+
+    /** Syntax for the subscript markup end: "-" */
+    String SUBSCRIPT_END_MARKUP = "~";
+
+    /** Syntax for the superscript markup start: "-" */
+    String SUPERSCRIPT_START_MARKUP = "^";
+
+    /** Syntax for the superscript markup end: "-" */
+    String SUPERSCRIPT_END_MARKUP = "^";
+
     /** Syntax for the table cell header end markup: "|" */
     String TABLE_CELL_HEADER_END_MARKUP = "|";
 
@@ -97,4 +115,10 @@
 
     /** Syntax for the table row markup: "|" */
     String TABLE_ROW_MARKUP = "|";
+
+    /** Syntax for the underlined markup start: "-" */
+    String UNDERLINED_START_MARKUP = "+";
+
+    /** Syntax for the underlined markup end: "-" */
+    String UNDERLINED_END_MARKUP = "+";
 }
diff --git a/doxia-modules/doxia-module-confluence/src/main/java/org/apache/maven/doxia/module/confluence/ConfluenceSink.java b/doxia-modules/doxia-module-confluence/src/main/java/org/apache/maven/doxia/module/confluence/ConfluenceSink.java
index 62921f3..ef35aaf 100644
--- a/doxia-modules/doxia-module-confluence/src/main/java/org/apache/maven/doxia/module/confluence/ConfluenceSink.java
+++ b/doxia-modules/doxia-module-confluence/src/main/java/org/apache/maven/doxia/module/confluence/ConfluenceSink.java
@@ -25,6 +25,7 @@
 import java.util.Stack;
 
 import javax.swing.text.html.HTML.Attribute;
+import javax.swing.text.html.HTML.Tag;
 
 import org.apache.maven.doxia.sink.AbstractTextSink;
 import org.apache.maven.doxia.sink.SinkEventAttributes;
@@ -975,7 +976,48 @@
     /** {@inheritDoc} */
     public void text( String text, SinkEventAttributes attributes )
     {
-        text( text );
+        if ( attributes == null )
+        {
+            text( text );
+        }
+        else
+        {
+            if ( attributes.containsAttribute( SinkEventAttributes.DECORATION, "underline" ) )
+            {
+                write( UNDERLINED_START_MARKUP );
+            }
+            else if ( attributes.containsAttribute( SinkEventAttributes.DECORATION, "line-through" ) )
+            {
+                write( STRIKETHROUGH_START_MARKUP );
+            }
+            if ( attributes.containsAttribute( SinkEventAttributes.VALIGN, "sub" ) )
+            {
+                write( SUBSCRIPT_START_MARKUP );
+            }
+            else if ( attributes.containsAttribute( SinkEventAttributes.VALIGN, "sup" ) )
+            {
+                write( SUPERSCRIPT_START_MARKUP );
+            }
+
+            text( text );
+
+            if ( attributes.containsAttribute( SinkEventAttributes.VALIGN, "sup" ) )
+            {
+                write( SUPERSCRIPT_END_MARKUP );
+            }
+            else if ( attributes.containsAttribute( SinkEventAttributes.VALIGN, "sub" ) )
+            {
+                write( SUBSCRIPT_END_MARKUP );
+            }
+            if ( attributes.containsAttribute( SinkEventAttributes.DECORATION, "line-through" ) )
+            {
+                write( STRIKETHROUGH_END_MARKUP );
+            }
+            else if ( attributes.containsAttribute( SinkEventAttributes.DECORATION, "underline" ) )
+            {
+                write( UNDERLINED_END_MARKUP );
+            }
+        }
     }
 
     /**
diff --git a/doxia-modules/doxia-module-confluence/src/test/java/org/apache/maven/doxia/module/confluence/ConfluenceSinkTest.java b/doxia-modules/doxia-module-confluence/src/test/java/org/apache/maven/doxia/module/confluence/ConfluenceSinkTest.java
index 127b56f..6584693 100644
--- a/doxia-modules/doxia-module-confluence/src/test/java/org/apache/maven/doxia/module/confluence/ConfluenceSinkTest.java
+++ b/doxia-modules/doxia-module-confluence/src/test/java/org/apache/maven/doxia/module/confluence/ConfluenceSinkTest.java
@@ -233,6 +233,30 @@
     {
         return "twiki";
     }
+    
+    // ----------------------------------------------------------------------
+    // Confluence specific 
+    // ----------------------------------------------------------------------
+
+    public void testSuperScript()
+    {
+        verifyValignSup( "^ValignSup^" );
+    }
+
+    public void testSubScript()
+    {
+        verifyValignSub( "~ValignSub~" );
+    }
+
+    public void testStrikeStrough()
+    {
+        verifyDecorationLineThrough( "-DecorationLineThrough-" );
+    }
+
+    public void testUnderline()
+    {
+        verifyDecorationUnderline( "+DecorationUnderline+" );
+    }
 
     // ----------------------------------------------------------------------
     // Override unused tests