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 );