diff options
| author | Michael Williamson <mike@zwobble.org> | 2016-02-13 21:31:19 +0000 |
|---|---|---|
| committer | Michael Williamson <mike@zwobble.org> | 2016-02-13 21:31:19 +0000 |
| commit | 573ad1b23218f872ec34311812a76ce4a9951e11 (patch) | |
| tree | 31ebdda5fef77bb4a45109154b7de90cb623899c /src | |
| parent | ed074b78dbb2a0d15ccb985b1e9531aace0fd4ea (diff) | |
Read endnote references
Diffstat (limited to 'src')
5 files changed, 29 insertions, 10 deletions
diff --git a/src/main/java/org/zwobble/mammoth/documents/NoteReference.java b/src/main/java/org/zwobble/mammoth/documents/NoteReference.java index 05311c0..01fff95 100644 --- a/src/main/java/org/zwobble/mammoth/documents/NoteReference.java +++ b/src/main/java/org/zwobble/mammoth/documents/NoteReference.java @@ -2,12 +2,18 @@ package org.zwobble.mammoth.documents; public class NoteReference implements DocumentElement { public static NoteReference footnoteReference(String noteId) { - return new NoteReference(noteId); + return new NoteReference(NoteType.FOOTNOTE, noteId); } + public static NoteReference endnoteReference(String noteId) { + return new NoteReference(NoteType.ENDNOTE, noteId); + } + + private final NoteType noteType; private final String noteId; - public NoteReference(String noteId) { + public NoteReference(NoteType noteType, String noteId) { + this.noteType = noteType; this.noteId = noteId; } diff --git a/src/main/java/org/zwobble/mammoth/documents/NoteType.java b/src/main/java/org/zwobble/mammoth/documents/NoteType.java new file mode 100644 index 0000000..02549d8 --- /dev/null +++ b/src/main/java/org/zwobble/mammoth/documents/NoteType.java @@ -0,0 +1,6 @@ +package org.zwobble.mammoth.documents; + +public enum NoteType { + FOOTNOTE, + ENDNOTE +} diff --git a/src/main/java/org/zwobble/mammoth/docx/BodyXmlReader.java b/src/main/java/org/zwobble/mammoth/docx/BodyXmlReader.java index 5fe6f80..c8e1785 100644 --- a/src/main/java/org/zwobble/mammoth/docx/BodyXmlReader.java +++ b/src/main/java/org/zwobble/mammoth/docx/BodyXmlReader.java @@ -55,7 +55,9 @@ public class BodyXmlReader { case "w:bookmarkStart": return readBookmark(element); case "w:footnoteReference": - return readNoteReference(element); + return readNoteReference(NoteType.FOOTNOTE, element); + case "w:endnoteReference": + return readNoteReference(NoteType.ENDNOTE, element); case "w:ins": case "w:smartTag": @@ -214,9 +216,9 @@ public class BodyXmlReader { } } - private ReadResult readNoteReference(XmlElement element) { + private ReadResult readNoteReference(NoteType noteType, XmlElement element) { String noteId = element.getAttribute("w:id"); - return success(new NoteReference(noteId)); + return success(new NoteReference(noteType, noteId)); } private Optional<String> readVal(XmlElementLike element, String name) { diff --git a/src/test/java/org/zwobble/mammoth/tests/DeepReflectionMatcher.java b/src/test/java/org/zwobble/mammoth/tests/DeepReflectionMatcher.java index 2d70d3e..72a6529 100644 --- a/src/test/java/org/zwobble/mammoth/tests/DeepReflectionMatcher.java +++ b/src/test/java/org/zwobble/mammoth/tests/DeepReflectionMatcher.java @@ -52,11 +52,7 @@ public class DeepReflectionMatcher<T> extends TypeSafeDiagnosingMatcher<T> { return matchesOptional(path, (Optional)expected, (Optional)actual, mismatchDescription); } - if (expected instanceof String) { - return matchesPrimitive(path, expected, actual, mismatchDescription); - } - - if (expected instanceof Boolean) { + if (expected instanceof String || expected instanceof Boolean || expected instanceof Enum) { return matchesPrimitive(path, expected, actual, mismatchDescription); } 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 6a21813..a2e41ea 100644 --- a/src/test/java/org/zwobble/mammoth/tests/docx/BodyXmlTests.java +++ b/src/test/java/org/zwobble/mammoth/tests/docx/BodyXmlTests.java @@ -21,6 +21,7 @@ import static java.util.Arrays.asList; import static org.hamcrest.MatcherAssert.assertThat; import static org.hamcrest.Matchers.equalTo; import static org.hamcrest.Matchers.hasProperty; +import static org.zwobble.mammoth.documents.NoteReference.endnoteReference; import static org.zwobble.mammoth.documents.NoteReference.footnoteReference; import static org.zwobble.mammoth.results.Warning.warning; import static org.zwobble.mammoth.tests.DeepReflectionMatcher.deepEquals; @@ -345,6 +346,14 @@ public class BodyXmlTests { } @Test + public void endnoteReferenceHasIdRead() { + XmlElement element = element("w:endnoteReference", map("w:id", "4")); + assertThat( + readSuccess(a(bodyReader), element), + deepEquals(endnoteReference("4"))); + } + + @Test public void appropriateElementsHaveTheirChildrenReadNormally() { assertChildrenAreReadNormally("w:ins"); assertChildrenAreReadNormally("w:smartTag"); |
