aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/main/java/org/zwobble/mammoth/docx/BodyXmlReader.java22
-rw-r--r--src/test/java/org/zwobble/mammoth/tests/docx/BodyXmlTests.java38
2 files changed, 58 insertions, 2 deletions
diff --git a/src/main/java/org/zwobble/mammoth/docx/BodyXmlReader.java b/src/main/java/org/zwobble/mammoth/docx/BodyXmlReader.java
index f2dac5b..49abbb5 100644
--- a/src/main/java/org/zwobble/mammoth/docx/BodyXmlReader.java
+++ b/src/main/java/org/zwobble/mammoth/docx/BodyXmlReader.java
@@ -2,6 +2,7 @@ package org.zwobble.mammoth.docx;
import org.zwobble.mammoth.documents.*;
import org.zwobble.mammoth.results.Result;
+import org.zwobble.mammoth.results.Warning;
import org.zwobble.mammoth.util.MammothOptionals;
import org.zwobble.mammoth.xml.XmlElement;
import org.zwobble.mammoth.xml.XmlElementLike;
@@ -63,12 +64,29 @@ public class BodyXmlReader {
case "w:txbxContent":
return readElements(element.children());
+ case "office-word:wrap":
+ case "v:shadow":
+ case "v:shapetype":
+ case "w:bookmarkEnd":
+ case "w:sectPr":
+ case "w:proofErr":
+ case "w:lastRenderedPageBreak":
+ case "w:commentRangeStart":
+ case "w:commentRangeEnd":
+ case "w:commentReference":
+ case "w:del":
+ case "w:footnoteRef":
+ case "w:endnoteRef":
case "w:pPr":
+ case "w:rPr":
+ case "w:tblPr":
+ case "w:tblGrid":
+ case "w:tcPr":
return EMPTY_SUCCESS;
default:
- // TODO: emit warning
- return EMPTY_SUCCESS;
+ Warning warning = warning("An unrecognised element was ignored: " + element.getName());
+ return new ReadResult(list(), list(warning));
}
}
diff --git a/src/test/java/org/zwobble/mammoth/tests/docx/BodyXmlTests.java b/src/test/java/org/zwobble/mammoth/tests/docx/BodyXmlTests.java
index 19f5c92..73b609a 100644
--- a/src/test/java/org/zwobble/mammoth/tests/docx/BodyXmlTests.java
+++ b/src/test/java/org/zwobble/mammoth/tests/docx/BodyXmlTests.java
@@ -354,6 +354,44 @@ public class BodyXmlTests {
deepEquals(make(a(PARAGRAPH))));
}
+ @Test
+ public void ignoredElementsAreIgnoredWithoutWarning() {
+ assertIsIgnored("office-word:wrap");
+ assertIsIgnored("v:shadow");
+ assertIsIgnored("v:shapetype");
+ assertIsIgnored("w:bookmarkEnd");
+ assertIsIgnored("w:sectPr");
+ assertIsIgnored("w:proofErr");
+ assertIsIgnored("w:lastRenderedPageBreak");
+ assertIsIgnored("w:commentRangeStart");
+ assertIsIgnored("w:commentRangeEnd");
+ assertIsIgnored("w:commentReference");
+ assertIsIgnored("w:del");
+ assertIsIgnored("w:footnoteRef");
+ assertIsIgnored("w:endnoteRef");
+ assertIsIgnored("w:pPr");
+ assertIsIgnored("w:rPr");
+ assertIsIgnored("w:tblPr");
+ assertIsIgnored("w:tblGrid");
+ assertIsIgnored("w:tcPr");
+ }
+
+ private void assertIsIgnored(String name) {
+ XmlElement element = element(name, list(paragraphXml()));
+
+ assertThat(
+ readAll(a(bodyReader), element),
+ isResult(equalTo(list()), list()));
+ }
+
+ @Test
+ public void unrecognisedElementsAreIgnoredWithWarning() {
+ XmlElement element = element("w:huh");
+ assertThat(
+ readAll(a(bodyReader), element),
+ isResult(equalTo(list()), list(warning("An unrecognised element was ignored: w:huh"))));
+ }
+
private static DocumentElement readSuccess(Maker<BodyXmlReader> reader, XmlElement element) {
Result<DocumentElement> result = read(reader, element);
assertThat(result.getWarnings(), deepEquals(list()));