aboutsummaryrefslogtreecommitdiff
path: root/src/main
diff options
context:
space:
mode:
Diffstat (limited to 'src/main')
-rw-r--r--src/main/java/org/zwobble/mammoth/Mammoth.java5
-rw-r--r--src/main/java/org/zwobble/mammoth/documents/Bookmark.java14
-rw-r--r--src/main/java/org/zwobble/mammoth/documents/DocumentElementVisitor.java1
-rw-r--r--src/main/java/org/zwobble/mammoth/docx/BodyXmlReader.java18
4 files changed, 35 insertions, 3 deletions
diff --git a/src/main/java/org/zwobble/mammoth/Mammoth.java b/src/main/java/org/zwobble/mammoth/Mammoth.java
index caf668f..9991266 100644
--- a/src/main/java/org/zwobble/mammoth/Mammoth.java
+++ b/src/main/java/org/zwobble/mammoth/Mammoth.java
@@ -89,6 +89,11 @@ public class Mammoth {
public String visit(Hyperlink hyperlink) {
throw new UnsupportedOperationException();
}
+
+ @Override
+ public String visit(Bookmark bookmark) {
+ throw new UnsupportedOperationException();
+ }
});
}
}
diff --git a/src/main/java/org/zwobble/mammoth/documents/Bookmark.java b/src/main/java/org/zwobble/mammoth/documents/Bookmark.java
new file mode 100644
index 0000000..598e83a
--- /dev/null
+++ b/src/main/java/org/zwobble/mammoth/documents/Bookmark.java
@@ -0,0 +1,14 @@
+package org.zwobble.mammoth.documents;
+
+public class Bookmark implements DocumentElement {
+ private final String name;
+
+ public Bookmark(String name) {
+ this.name = name;
+ }
+
+ @Override
+ public <T> T accept(DocumentElementVisitor<T> visitor) {
+ return visitor.visit(this);
+ }
+}
diff --git a/src/main/java/org/zwobble/mammoth/documents/DocumentElementVisitor.java b/src/main/java/org/zwobble/mammoth/documents/DocumentElementVisitor.java
index 564bacb..84fccc2 100644
--- a/src/main/java/org/zwobble/mammoth/documents/DocumentElementVisitor.java
+++ b/src/main/java/org/zwobble/mammoth/documents/DocumentElementVisitor.java
@@ -12,4 +12,5 @@ public interface DocumentElementVisitor<T> {
T visit(TableCell tableCell);
T visit(Hyperlink hyperlink);
+ T visit(Bookmark bookmark);
}
diff --git a/src/main/java/org/zwobble/mammoth/docx/BodyXmlReader.java b/src/main/java/org/zwobble/mammoth/docx/BodyXmlReader.java
index e283a9c..fd32aae 100644
--- a/src/main/java/org/zwobble/mammoth/docx/BodyXmlReader.java
+++ b/src/main/java/org/zwobble/mammoth/docx/BodyXmlReader.java
@@ -47,6 +47,12 @@ public class BodyXmlReader {
case "w:tc":
return readElements(element.children()).map(TableCell::new);
+ case "w:hyperlink":
+ return readHyperlink(element);
+
+ case "w:bookmarkStart":
+ return readBookmark(element);
+
case "w:ins":
case "w:smartTag":
case "w:drawing":
@@ -56,9 +62,6 @@ public class BodyXmlReader {
case "w:txbxContent":
return readElements(element.children());
- case "w:hyperlink":
- return readHyperlink(element);
-
case "w:pPr":
return EMPTY_SUCCESS;
@@ -172,6 +175,15 @@ public class BodyXmlReader {
}
}
+ private ReadResult readBookmark(XmlElement element) {
+ String name = element.getAttribute("w:name");
+ if (name.equals("_GoBack")) {
+ return ReadResult.EMPTY_SUCCESS;
+ } else {
+ return success(new Bookmark(name));
+ }
+ }
+
private Optional<String> readVal(XmlElementLike element, String name) {
return element.findChildOrEmpty(name).getAttributeOrNone("w:val");
}