aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorMichael Williamson <mike@zwobble.org>2016-02-13 21:31:19 +0000
committerMichael Williamson <mike@zwobble.org>2016-02-13 21:31:19 +0000
commit573ad1b23218f872ec34311812a76ce4a9951e11 (patch)
tree31ebdda5fef77bb4a45109154b7de90cb623899c /src
parented074b78dbb2a0d15ccb985b1e9531aace0fd4ea (diff)
Read endnote references
Diffstat (limited to 'src')
-rw-r--r--src/main/java/org/zwobble/mammoth/documents/NoteReference.java10
-rw-r--r--src/main/java/org/zwobble/mammoth/documents/NoteType.java6
-rw-r--r--src/main/java/org/zwobble/mammoth/docx/BodyXmlReader.java8
-rw-r--r--src/test/java/org/zwobble/mammoth/tests/DeepReflectionMatcher.java6
-rw-r--r--src/test/java/org/zwobble/mammoth/tests/docx/BodyXmlTests.java9
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");