aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/main/java/org/zwobble/mammoth/Mammoth.java5
-rw-r--r--src/main/java/org/zwobble/mammoth/documents/DocumentElementVisitor.java2
-rw-r--r--src/main/java/org/zwobble/mammoth/documents/NoteReference.java18
-rw-r--r--src/main/java/org/zwobble/mammoth/docx/BodyXmlReader.java7
-rw-r--r--src/test/java/org/zwobble/mammoth/tests/docx/BodyXmlTests.java9
5 files changed, 40 insertions, 1 deletions
diff --git a/src/main/java/org/zwobble/mammoth/Mammoth.java b/src/main/java/org/zwobble/mammoth/Mammoth.java
index a1bf0d0..9564a6f 100644
--- a/src/main/java/org/zwobble/mammoth/Mammoth.java
+++ b/src/main/java/org/zwobble/mammoth/Mammoth.java
@@ -99,6 +99,11 @@ public class Mammoth {
public String visit(Bookmark bookmark) {
throw new UnsupportedOperationException();
}
+
+ @Override
+ public String visit(NoteReference noteReference) {
+ throw new UnsupportedOperationException();
+ }
});
}
}
diff --git a/src/main/java/org/zwobble/mammoth/documents/DocumentElementVisitor.java b/src/main/java/org/zwobble/mammoth/documents/DocumentElementVisitor.java
index b4cd390..f3a4ca4 100644
--- a/src/main/java/org/zwobble/mammoth/documents/DocumentElementVisitor.java
+++ b/src/main/java/org/zwobble/mammoth/documents/DocumentElementVisitor.java
@@ -14,5 +14,5 @@ public interface DocumentElementVisitor<T> {
T visit(Hyperlink hyperlink);
T visit(Bookmark bookmark);
-
+ T visit(NoteReference noteReference);
}
diff --git a/src/main/java/org/zwobble/mammoth/documents/NoteReference.java b/src/main/java/org/zwobble/mammoth/documents/NoteReference.java
new file mode 100644
index 0000000..05311c0
--- /dev/null
+++ b/src/main/java/org/zwobble/mammoth/documents/NoteReference.java
@@ -0,0 +1,18 @@
+package org.zwobble.mammoth.documents;
+
+public class NoteReference implements DocumentElement {
+ public static NoteReference footnoteReference(String noteId) {
+ return new NoteReference(noteId);
+ }
+
+ private final String noteId;
+
+ public NoteReference(String noteId) {
+ this.noteId = noteId;
+ }
+
+ @Override
+ public <T> T accept(DocumentElementVisitor<T> visitor) {
+ return visitor.visit(this);
+ }
+}
diff --git a/src/main/java/org/zwobble/mammoth/docx/BodyXmlReader.java b/src/main/java/org/zwobble/mammoth/docx/BodyXmlReader.java
index 49abbb5..5fe6f80 100644
--- a/src/main/java/org/zwobble/mammoth/docx/BodyXmlReader.java
+++ b/src/main/java/org/zwobble/mammoth/docx/BodyXmlReader.java
@@ -54,6 +54,8 @@ public class BodyXmlReader {
return readHyperlink(element);
case "w:bookmarkStart":
return readBookmark(element);
+ case "w:footnoteReference":
+ return readNoteReference(element);
case "w:ins":
case "w:smartTag":
@@ -212,6 +214,11 @@ public class BodyXmlReader {
}
}
+ private ReadResult readNoteReference(XmlElement element) {
+ String noteId = element.getAttribute("w:id");
+ return success(new NoteReference(noteId));
+ }
+
private Optional<String> readVal(XmlElementLike element, String name) {
return element.findChildOrEmpty(name).getAttributeOrNone("w:val");
}
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 d78faa1..6a21813 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.footnoteReference;
import static org.zwobble.mammoth.results.Warning.warning;
import static org.zwobble.mammoth.tests.DeepReflectionMatcher.deepEquals;
import static org.zwobble.mammoth.tests.documents.DocumentElementMakers.*;
@@ -336,6 +337,14 @@ public class BodyXmlTests {
}
@Test
+ public void footnoteReferenceHasIdRead() {
+ XmlElement element = element("w:footnoteReference", map("w:id", "4"));
+ assertThat(
+ readSuccess(a(bodyReader), element),
+ deepEquals(footnoteReference("4")));
+ }
+
+ @Test
public void appropriateElementsHaveTheirChildrenReadNormally() {
assertChildrenAreReadNormally("w:ins");
assertChildrenAreReadNormally("w:smartTag");