aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/org/zwobble/mammoth/internal/docx/StatefulBodyXmlReader.java
diff options
context:
space:
mode:
authorMichael Williamson <mike@zwobble.org>2017-05-30 11:26:21 +0100
committerMichael Williamson <mike@zwobble.org>2017-05-30 11:26:21 +0100
commit275ff587231c8a74910a8f63595a7a23481d713f (patch)
tree8aa109568981a23bfcccfadb7388a402f4203c9f /src/main/java/org/zwobble/mammoth/internal/docx/StatefulBodyXmlReader.java
parent33c342c9c5b102ec5cb171cdfd72ac3722631d15 (diff)
Read target frame on hyperlinks
Diffstat (limited to 'src/main/java/org/zwobble/mammoth/internal/docx/StatefulBodyXmlReader.java')
-rw-r--r--src/main/java/org/zwobble/mammoth/internal/docx/StatefulBodyXmlReader.java13
1 files changed, 9 insertions, 4 deletions
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;
}