You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by rf...@apache.org on 2013/04/07 11:50:29 UTC

svn commit: r1465353 - in /maven/doxia/doxia/trunk/doxia-modules/doxia-module-confluence/src: main/java/org/apache/maven/doxia/module/confluence/parser/ test/java/org/apache/maven/doxia/module/confluence/

Author: rfscholte
Date: Sun Apr  7 09:50:29 2013
New Revision: 1465353

URL: http://svn.apache.org/r1465353
Log:
[DOXIA-170] Confluence module should do something with non-doxia formatting 

Added:
    maven/doxia/doxia/trunk/doxia-modules/doxia-module-confluence/src/main/java/org/apache/maven/doxia/module/confluence/parser/LinethroughBlock.java
    maven/doxia/doxia/trunk/doxia-modules/doxia-module-confluence/src/main/java/org/apache/maven/doxia/module/confluence/parser/SubBlock.java
    maven/doxia/doxia/trunk/doxia-modules/doxia-module-confluence/src/main/java/org/apache/maven/doxia/module/confluence/parser/SupBlock.java
    maven/doxia/doxia/trunk/doxia-modules/doxia-module-confluence/src/main/java/org/apache/maven/doxia/module/confluence/parser/UnderlineBlock.java
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

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=1465353&r1=1465352&r2=1465353&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 Sun Apr  7 09:50:29 2013
@@ -41,6 +41,14 @@ public class ChildBlocksBuilder
 
     private boolean insideLink = false;
 
+    private boolean insideLinethrough = false;
+
+    private boolean insideUnderline = false;
+
+    private boolean insideSub = false;
+
+    private boolean insideSup = false;
+
     private List<Block> blocks = new ArrayList<Block>();
 
     private StringBuilder text = new StringBuilder();
@@ -106,6 +114,74 @@ public class ChildBlocksBuilder
                     }
 
                     break;
+                case '-':
+                    if ( insideLinethrough )
+                    {
+                        insideLinethrough = false;
+                        blocks.add( new LinethroughBlock( text.toString() ) );
+                        text = new StringBuilder();
+                    }
+                    else if ( insideLink )
+                    {
+                        text.append( c );    
+                    }
+                    else
+                    {
+                        text = addTextBlockIfNecessary( blocks, specialBlocks, text );
+                        insideLinethrough = true;                            
+                    }
+                    break;
+                case '+':
+                    if ( insideUnderline )
+                    {
+                    	insideUnderline = false;
+                        blocks.add( new UnderlineBlock( text.toString() ) );
+                        text = new StringBuilder();
+                    }
+                    else if ( insideLink )
+                    {
+                        text.append( c );    
+                    }
+                    else
+                    {
+                        text = addTextBlockIfNecessary( blocks, specialBlocks, text );
+                        insideUnderline = true;                            
+                    }
+                    break;
+                case '~':
+                    if ( insideSub )
+                    {
+                    	insideSub = false;
+                        blocks.add( new SubBlock( text.toString() ) );
+                        text = new StringBuilder();
+                    }
+                    else if ( insideLink )
+                    {
+                        text.append( c );    
+                    }
+                    else
+                    {
+                        text = addTextBlockIfNecessary( blocks, specialBlocks, text );
+                        insideSub = true;                            
+                    }
+                    break;
+                case '^':
+                    if ( insideSup )
+                    {
+                    	insideSup = false;
+                        blocks.add( new SupBlock( text.toString() ) );
+                        text = new StringBuilder();
+                    }
+                    else if ( insideLink )
+                    {
+                        text.append( c );    
+                    }
+                    else
+                    {
+                        text = addTextBlockIfNecessary( blocks, specialBlocks, text );
+                        insideSup = true;                            
+                    }
+                    break;
                 case '[':
                     insideLink = true;
                     text = addTextBlockIfNecessary( blocks, specialBlocks, text );

Added: maven/doxia/doxia/trunk/doxia-modules/doxia-module-confluence/src/main/java/org/apache/maven/doxia/module/confluence/parser/LinethroughBlock.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/LinethroughBlock.java?rev=1465353&view=auto
==============================================================================
--- maven/doxia/doxia/trunk/doxia-modules/doxia-module-confluence/src/main/java/org/apache/maven/doxia/module/confluence/parser/LinethroughBlock.java (added)
+++ maven/doxia/doxia/trunk/doxia-modules/doxia-module-confluence/src/main/java/org/apache/maven/doxia/module/confluence/parser/LinethroughBlock.java Sun Apr  7 09:50:29 2013
@@ -0,0 +1,45 @@
+package org.apache.maven.doxia.module.confluence.parser;
+
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+import org.apache.maven.doxia.sink.Sink;
+import org.apache.maven.doxia.sink.SinkEventAttributeSet;
+import org.apache.maven.doxia.sink.SinkEventAttributes;
+
+/**
+ * 
+ * @author Robert Scholte
+ * @since 1.4
+ */
+public class LinethroughBlock
+    implements Block
+{
+    private String text;
+    
+    public LinethroughBlock( String text )
+    {
+        this.text = text;
+    }
+
+    public void traverse( Sink sink )
+    {
+        sink.text( text, new SinkEventAttributeSet( SinkEventAttributes.DECORATION, "line-through" ) );
+    }
+}

Added: maven/doxia/doxia/trunk/doxia-modules/doxia-module-confluence/src/main/java/org/apache/maven/doxia/module/confluence/parser/SubBlock.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/SubBlock.java?rev=1465353&view=auto
==============================================================================
--- maven/doxia/doxia/trunk/doxia-modules/doxia-module-confluence/src/main/java/org/apache/maven/doxia/module/confluence/parser/SubBlock.java (added)
+++ maven/doxia/doxia/trunk/doxia-modules/doxia-module-confluence/src/main/java/org/apache/maven/doxia/module/confluence/parser/SubBlock.java Sun Apr  7 09:50:29 2013
@@ -0,0 +1,45 @@
+package org.apache.maven.doxia.module.confluence.parser;
+
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+import org.apache.maven.doxia.sink.Sink;
+import org.apache.maven.doxia.sink.SinkEventAttributeSet;
+import org.apache.maven.doxia.sink.SinkEventAttributes;
+
+/**
+ * 
+ * @author Robert Scholte
+ * @since 1.4
+ */
+public class SubBlock
+    implements Block
+{
+    private String text;
+    
+    public SubBlock( String text )
+    {
+        this.text = text;
+    }
+
+    public void traverse( Sink sink )
+    {
+        sink.text( text, new SinkEventAttributeSet( SinkEventAttributes.VALIGN, "sub" ) );
+    }
+}

Added: maven/doxia/doxia/trunk/doxia-modules/doxia-module-confluence/src/main/java/org/apache/maven/doxia/module/confluence/parser/SupBlock.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/SupBlock.java?rev=1465353&view=auto
==============================================================================
--- maven/doxia/doxia/trunk/doxia-modules/doxia-module-confluence/src/main/java/org/apache/maven/doxia/module/confluence/parser/SupBlock.java (added)
+++ maven/doxia/doxia/trunk/doxia-modules/doxia-module-confluence/src/main/java/org/apache/maven/doxia/module/confluence/parser/SupBlock.java Sun Apr  7 09:50:29 2013
@@ -0,0 +1,45 @@
+package org.apache.maven.doxia.module.confluence.parser;
+
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+import org.apache.maven.doxia.sink.Sink;
+import org.apache.maven.doxia.sink.SinkEventAttributeSet;
+import org.apache.maven.doxia.sink.SinkEventAttributes;
+
+/**
+ * 
+ * @author Robert Scholte
+ * @since 1.4
+ */
+public class SupBlock
+    implements Block
+{
+    private String text;
+    
+    public SupBlock( String text )
+    {
+        this.text = text;
+    }
+
+    public void traverse( Sink sink )
+    {
+        sink.text( text, new SinkEventAttributeSet( SinkEventAttributes.VALIGN, "sup" ) );
+    }
+}

Added: maven/doxia/doxia/trunk/doxia-modules/doxia-module-confluence/src/main/java/org/apache/maven/doxia/module/confluence/parser/UnderlineBlock.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/UnderlineBlock.java?rev=1465353&view=auto
==============================================================================
--- maven/doxia/doxia/trunk/doxia-modules/doxia-module-confluence/src/main/java/org/apache/maven/doxia/module/confluence/parser/UnderlineBlock.java (added)
+++ maven/doxia/doxia/trunk/doxia-modules/doxia-module-confluence/src/main/java/org/apache/maven/doxia/module/confluence/parser/UnderlineBlock.java Sun Apr  7 09:50:29 2013
@@ -0,0 +1,45 @@
+package org.apache.maven.doxia.module.confluence.parser;
+
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+import org.apache.maven.doxia.sink.Sink;
+import org.apache.maven.doxia.sink.SinkEventAttributeSet;
+import org.apache.maven.doxia.sink.SinkEventAttributes;
+
+/**
+ * 
+ * @author Robert Scholte
+ * @since 1.4
+ */
+public class UnderlineBlock
+    implements Block
+{
+    private String text;
+    
+    public UnderlineBlock( String text )
+    {
+        this.text = text;
+    }
+
+    public void traverse( Sink sink )
+    {
+        sink.text( text, new SinkEventAttributeSet( SinkEventAttributes.DECORATION, "underline" ) );
+    }
+}

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=1465353&r1=1465352&r2=1465353&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 Sun Apr  7 09:50:29 2013
@@ -31,6 +31,7 @@ import org.apache.maven.doxia.parser.Abs
 import org.apache.maven.doxia.parser.ParseException;
 import org.apache.maven.doxia.parser.Parser;
 import org.apache.maven.doxia.sink.Sink;
+import org.apache.maven.doxia.sink.SinkEventAttributeSet;
 import org.apache.maven.doxia.sink.SinkEventElement;
 import org.apache.maven.doxia.sink.SinkEventTestingSink;
 import org.apache.maven.doxia.sink.TextSink;
@@ -548,6 +549,62 @@ public class ConfluenceParserTest
         assertEquals("body_", it.next().getName() );
     }
 
+	public void testLinethrough() throws Exception {
+		String document = "-Linethrough-";
+		output = new StringWriter();
+		SinkEventTestingSink sink = new SinkEventTestingSink();
+		createParser().parse(new StringReader(document), sink);
+
+		Iterator<SinkEventElement> it = sink.getEventList().iterator();
+		assertEquals(it, "head", "head_", "body", "paragraph");
+		assertEquals(it.next(), "text", "Linethrough",
+				new SinkEventAttributeSet("decoration", "line-through"));
+		assertEquals(it, "paragraph_", "body_");
+		assertFalse(it.hasNext());
+	}
+
+	public void testUnderline() throws Exception {
+		String document = "+Underline+";
+		output = new StringWriter();
+		SinkEventTestingSink sink = new SinkEventTestingSink();
+		createParser().parse(new StringReader(document), sink);
+
+		Iterator<SinkEventElement> it = sink.getEventList().iterator();
+		assertEquals(it, "head", "head_", "body", "paragraph");
+		assertEquals(it.next(), "text", "Underline", new SinkEventAttributeSet(
+				"decoration", "underline"));
+		assertEquals(it, "paragraph_", "body_");
+		assertFalse(it.hasNext());
+	}
+
+	public void testSub() throws Exception {
+		String document = "~Sub~";
+		output = new StringWriter();
+		SinkEventTestingSink sink = new SinkEventTestingSink();
+		createParser().parse(new StringReader(document), sink);
+
+		Iterator<SinkEventElement> it = sink.getEventList().iterator();
+		assertEquals(it, "head", "head_", "body", "paragraph");
+		assertEquals(it.next(), "text", "Sub", new SinkEventAttributeSet(
+				"valign", "sub"));
+		assertEquals(it, "paragraph_", "body_");
+		assertFalse(it.hasNext());
+	}
+
+	public void testSup() throws Exception {
+		String document = "^Sup^";
+		output = new StringWriter();
+		SinkEventTestingSink sink = new SinkEventTestingSink();
+		createParser().parse(new StringReader(document), sink);
+
+		Iterator<SinkEventElement> it = sink.getEventList().iterator();
+		assertEquals(it, "head", "head_", "body", "paragraph");
+		assertEquals(it.next(), "text", "Sup", new SinkEventAttributeSet(
+				"valign", "sup"));
+		assertEquals(it, "paragraph_", "body_");
+		assertFalse(it.hasNext());
+	}
+
     private void assertContainsLines( String message, String result, String lines )
     {
         lines = StringUtils.replace( lines, "\n", EOL );