aboutsummaryrefslogtreecommitdiff
path: root/src/main
diff options
context:
space:
mode:
Diffstat (limited to 'src/main')
-rw-r--r--src/main/java/org/zwobble/mammoth/internal/documents/Hyperlink.java16
-rw-r--r--src/main/java/org/zwobble/mammoth/internal/docx/StatefulBodyXmlReader.java13
2 files changed, 20 insertions, 9 deletions
diff --git a/src/main/java/org/zwobble/mammoth/internal/documents/Hyperlink.java b/src/main/java/org/zwobble/mammoth/internal/documents/Hyperlink.java
index f78b7fe..c3fe794 100644
--- a/src/main/java/org/zwobble/mammoth/internal/documents/Hyperlink.java
+++ b/src/main/java/org/zwobble/mammoth/internal/documents/Hyperlink.java
@@ -4,21 +4,23 @@ import java.util.List;
import java.util.Optional;
public class Hyperlink implements DocumentElement, HasChildren {
- public static Hyperlink href(String href, List<DocumentElement> children) {
- return new Hyperlink(Optional.of(href), Optional.empty(), children);
+ public static Hyperlink href(String href, Optional<String> targetFrame, List<DocumentElement> children) {
+ return new Hyperlink(Optional.of(href), Optional.empty(), targetFrame, children);
}
- public static Hyperlink anchor(String anchor, List<DocumentElement> children) {
- return new Hyperlink(Optional.empty(), Optional.of(anchor), children);
+ public static Hyperlink anchor(String anchor, Optional<String> targetFrame, List<DocumentElement> children) {
+ return new Hyperlink(Optional.empty(), Optional.of(anchor), targetFrame, children);
}
private final Optional<String> href;
private final Optional<String> anchor;
+ private final Optional<String> targetFrame;
private final List<DocumentElement> children;
- private Hyperlink(Optional<String> href, Optional<String> anchor, List<DocumentElement> children) {
+ public Hyperlink(Optional<String> href, Optional<String> anchor, Optional<String> targetFrame, List<DocumentElement> children) {
this.href = href;
this.anchor = anchor;
+ this.targetFrame = targetFrame;
this.children = children;
}
@@ -30,6 +32,10 @@ public class Hyperlink implements DocumentElement, HasChildren {
return anchor;
}
+ public Optional<String> getTargetFrame() {
+ return targetFrame;
+ }
+
@Override
public List<DocumentElement> getChildren() {
return children;
diff --git a/src/main/java/org/zwobble/mammoth/internal/docx/StatefulBodyXmlReader.java b/src/main/java/org/zwobble/mammoth/internal/docx/StatefulBodyXmlReader.java
index f4eda9e..b72ff29 100644
--- a/src/main/java/org/zwobble/mammoth/internal/docx/StatefulBodyXmlReader.java
+++ b/src/main/java/org/zwobble/mammoth/internal/docx/StatefulBodyXmlReader.java
@@ -168,7 +168,7 @@ class StatefulBodyXmlReader {
(style, children) -> {
Optional<String> hyperlinkHref = currentHyperlinkHref();
if (hyperlinkHref.isPresent()) {
- children = list(Hyperlink.href(hyperlinkHref.get(), children));
+ children = list(Hyperlink.href(hyperlinkHref.get(), Optional.empty(), children));
}
return new Run(
@@ -442,15 +442,20 @@ class StatefulBodyXmlReader {
private ReadResult readHyperlink(XmlElement element) {
Optional<String> relationshipId = element.getAttributeOrNone("r:id");
Optional<String> anchor = element.getAttributeOrNone("w:anchor");
+ Optional<String> targetFrame = element.getAttributeOrNone("w:tgtFrame");
ReadResult childrenResult = readElements(element.getChildren());
+
if (relationshipId.isPresent()) {
String targetHref = relationships.findRelationshipById(relationshipId.get()).getTarget();
String href = anchor.map(fragment -> Uris.replaceFragment(targetHref, anchor.get()))
.orElse(targetHref);
- return childrenResult.map(children -> Hyperlink.href(href, children));
+ return childrenResult.map(children ->
+ Hyperlink.href(href, targetFrame, children)
+ );
} else if (anchor.isPresent()) {
- return childrenResult.map(children -> Hyperlink.anchor(
- anchor.get(), children));
+ return childrenResult.map(children ->
+ Hyperlink.anchor(anchor.get(), targetFrame, children)
+ );
} else {
return childrenResult;
}