diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/main/java/org/zwobble/mammoth/docx/BodyXmlReader.java | 22 | ||||
| -rw-r--r-- | src/test/java/org/zwobble/mammoth/tests/docx/BodyXmlTests.java | 38 |
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())); |
