diff --git a/html2xdoc/.cvsignore b/html2xdoc/.cvsignore index bca2cda9..7063fd20 100644 --- a/html2xdoc/.cvsignore +++ b/html2xdoc/.cvsignore @@ -1,3 +1,5 @@ target maven.log velocity.log +bin +.classpath diff --git a/html2xdoc/plugin.jelly b/html2xdoc/plugin.jelly index da889372..7236cb36 100644 --- a/html2xdoc/plugin.jelly +++ b/html2xdoc/plugin.jelly @@ -24,9 +24,6 @@ - - - @@ -56,6 +53,9 @@ + + + diff --git a/html2xdoc/src/main/org/apache/maven/html2xdoc/Html2XdocBean.java b/html2xdoc/src/main/org/apache/maven/html2xdoc/Html2XdocBean.java index fa1e92de..81a8afee 100644 --- a/html2xdoc/src/main/org/apache/maven/html2xdoc/Html2XdocBean.java +++ b/html2xdoc/src/main/org/apache/maven/html2xdoc/Html2XdocBean.java @@ -295,8 +295,22 @@ public class Html2XdocBean { * @param node the node to add */ private void addNode(Node node) { - currentNode.add(cloneNode(node)); - currentParaNode = null; + if (currentParaNode != null && ! shouldBreakPara(node)) { + currentParaNode.add(cloneNode(node)); + } + else { + currentNode.add(cloneNode(node)); + currentParaNode = null; + } + } + + /** + * @return true if the paragraph should be split, such as for a br or p + * tag + */ + protected boolean shouldBreakPara(Node node) { + String name = node.getName(); + return name.equals("p") || name.equals("br"); } /** diff --git a/html2xdoc/src/test/org/apache/maven/html2xdoc/TestHtml2Xdoc.java b/html2xdoc/src/test/org/apache/maven/html2xdoc/TestHtml2Xdoc.java index b516b484..ac7747d2 100644 --- a/html2xdoc/src/test/org/apache/maven/html2xdoc/TestHtml2Xdoc.java +++ b/html2xdoc/src/test/org/apache/maven/html2xdoc/TestHtml2Xdoc.java @@ -65,26 +65,18 @@ package org.apache.maven.html2xdoc; import java.io.IOException; import java.io.StringWriter; import java.net.URL; -import java.util.Iterator; -import java.util.LinkedList; -import java.util.List; - -import org.dom4j.CharacterData; -import org.dom4j.Document; -import org.dom4j.DocumentFactory; -import org.dom4j.Element; -import org.dom4j.Node; -import org.dom4j.io.OutputFormat; -import org.dom4j.io.SAXReader; -import org.dom4j.io.XMLWriter; - -import org.cyberneko.html.parsers.SAXParser; import junit.framework.Test; import junit.framework.TestCase; import junit.framework.TestSuite; import junit.textui.TestRunner; +import org.cyberneko.html.parsers.SAXParser; +import org.dom4j.Document; +import org.dom4j.io.OutputFormat; +import org.dom4j.io.SAXReader; +import org.dom4j.io.XMLWriter; + /** * A test harness for the HTML to XDOC converter * @@ -92,6 +84,8 @@ import junit.textui.TestRunner; */ public class TestHtml2Xdoc extends TestCase { + protected boolean verbose = false; + public static void main( String[] args ) { TestRunner.run( suite() ); } @@ -107,11 +101,14 @@ public class TestHtml2Xdoc extends TestCase { // Test cases //------------------------------------------------------------------------- public void testOne() throws Exception { + assertConversion("codeinpara.html", "codeinpara.xml"); assertConversion("input1.html", "output1.xml"); assertConversion("h1h2.html", "h1h2.xml"); - assertConversion("h3h4.html", "h1h2.xml"); + assertConversion("h2h3.html", "h1h2.xml"); + assertConversion("h2h4.html", "h1h2.xml"); + assertConversion("h3h4.html", "h1h2.xml"); assertConversion("link.html", "link.xml"); - assertConversion("comment.html", "comment.xml"); + assertConversion("comment.html", "comment.xml"); } // Implementation methods @@ -119,9 +116,19 @@ public class TestHtml2Xdoc extends TestCase { protected void assertConversion(String input, String output) throws Exception { Html2XdocBean converter = createConverter(); Document inputDoc = parseHtml(input); + + Document expectedDoc = parse(output); Document actualDoc = converter.convert(inputDoc); + + if (verbose) { + System.out.println("Comparing: " + input + " to: " + output); + System.out.println("Parsed: " + inputDoc.asXML()); + System.out.println("Generated: " + actualDoc.asXML()); + System.out.println(); + System.out.println(); + } assertEqual("Output for: " + input + " does not match: " + output, expectedDoc, actualDoc); } diff --git a/html2xdoc/src/test/org/apache/maven/html2xdoc/codeinpara.html b/html2xdoc/src/test/org/apache/maven/html2xdoc/codeinpara.html new file mode 100644 index 00000000..58d1de33 --- /dev/null +++ b/html2xdoc/src/test/org/apache/maven/html2xdoc/codeinpara.html @@ -0,0 +1,12 @@ + + + + + A title + + + +

Title

+Some text some code more text + + diff --git a/html2xdoc/src/test/org/apache/maven/html2xdoc/codeinpara.xml b/html2xdoc/src/test/org/apache/maven/html2xdoc/codeinpara.xml new file mode 100644 index 00000000..ad45b68e --- /dev/null +++ b/html2xdoc/src/test/org/apache/maven/html2xdoc/codeinpara.xml @@ -0,0 +1,11 @@ + + + A title + + +
+

Some text some code more text +

+
+ +
diff --git a/html2xdoc/src/test/org/apache/maven/html2xdoc/h2h3.html b/html2xdoc/src/test/org/apache/maven/html2xdoc/h2h3.html new file mode 100644 index 00000000..0fc6fc41 --- /dev/null +++ b/html2xdoc/src/test/org/apache/maven/html2xdoc/h2h3.html @@ -0,0 +1,20 @@ + + + + + A title + + + +

A section title

+ +Some text +
+More text + +

a subsection

+ +This is a subsection. It only has this. + + + diff --git a/html2xdoc/src/test/org/apache/maven/html2xdoc/h2h4.html b/html2xdoc/src/test/org/apache/maven/html2xdoc/h2h4.html new file mode 100644 index 00000000..4ec93b6d --- /dev/null +++ b/html2xdoc/src/test/org/apache/maven/html2xdoc/h2h4.html @@ -0,0 +1,20 @@ + + + + + A title + + + +

A section title

+ +Some text +
+More text + +

a subsection

+ +This is a subsection. It only has this. + + +