From e06898479c2209151dc80e5e0c455d117b07489d Mon Sep 17 00:00:00 2001 From: jstrachan Date: Wed, 1 Oct 2003 10:43:03 +0000 Subject: [PATCH] Various fixes for the HTML plugin. * recreate the converter bean for each file to avoid multiple files causing wierdness to occur on the handling of headings etc * added more test cases which used to highlight some issues, such as a nested element inside some text markup git-svn-id: https://svn.apache.org/repos/asf/maven/maven-1/plugins/trunk@114136 13f79535-47bb-0310-9956-ffa450edef68 --- html2xdoc/.cvsignore | 2 + html2xdoc/plugin.jelly | 6 +-- .../apache/maven/html2xdoc/Html2XdocBean.java | 18 ++++++++- .../apache/maven/html2xdoc/TestHtml2Xdoc.java | 39 +++++++++++-------- .../apache/maven/html2xdoc/codeinpara.html | 12 ++++++ .../org/apache/maven/html2xdoc/codeinpara.xml | 11 ++++++ .../test/org/apache/maven/html2xdoc/h2h3.html | 20 ++++++++++ .../test/org/apache/maven/html2xdoc/h2h4.html | 20 ++++++++++ 8 files changed, 107 insertions(+), 21 deletions(-) create mode 100644 html2xdoc/src/test/org/apache/maven/html2xdoc/codeinpara.html create mode 100644 html2xdoc/src/test/org/apache/maven/html2xdoc/codeinpara.xml create mode 100644 html2xdoc/src/test/org/apache/maven/html2xdoc/h2h3.html create mode 100644 html2xdoc/src/test/org/apache/maven/html2xdoc/h2h4.html 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. + + +