summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorMichael Williamson <mike@zwobble.org>2017-05-30 11:37:00 +0100
committerMichael Williamson <mike@zwobble.org>2017-05-30 11:37:00 +0100
commit330140c7c94cce2c57f41bc2d3e14b94dc4f23b0 (patch)
treea3194a381ffd27d940df9cf516443cde1beb084e /src
parent275ff587231c8a74910a8f63595a7a23481d713f (diff)
Ignore blank target frame
Diffstat (limited to 'src')
-rw-r--r--src/main/java/org/zwobble/mammoth/internal/docx/StatefulBodyXmlReader.java3
-rw-r--r--src/test/java/org/zwobble/mammoth/tests/docx/BodyXmlTests.java16
-rw-r--r--src/test/java/org/zwobble/mammoth/tests/docx/DocumentMatchers.java8
3 files changed, 22 insertions, 5 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 b72ff29..c962f58 100644
--- a/src/main/java/org/zwobble/mammoth/internal/docx/StatefulBodyXmlReader.java
+++ b/src/main/java/org/zwobble/mammoth/internal/docx/StatefulBodyXmlReader.java
@@ -442,7 +442,8 @@ 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");
+ Optional<String> targetFrame = element.getAttributeOrNone("w:tgtFrame")
+ .filter(value -> !value.isEmpty());
ReadResult childrenResult = readElements(element.getChildren());
if (relationshipId.isPresent()) {
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 1ba96d1..f77eec1 100644
--- a/src/test/java/org/zwobble/mammoth/tests/docx/BodyXmlTests.java
+++ b/src/test/java/org/zwobble/mammoth/tests/docx/BodyXmlTests.java
@@ -757,7 +757,7 @@ public class BodyXmlTests {
readSuccess(bodyReader(relationships), element),
isHyperlink(
hasHref("http://example.com"),
- hasBlankAnchor(),
+ hasNoAnchor(),
hasChildren(isRun(hasChildren()))
)
);
@@ -794,7 +794,7 @@ public class BodyXmlTests {
readSuccess(bodyReader(), element),
isHyperlink(
hasAnchor("start"),
- hasBlankHref()
+ hasNoHref()
)
);
}
@@ -820,6 +820,18 @@ public class BodyXmlTests {
}
@Test
+ public void hyperlinkEmptyTargetFrameIsIgnored() {
+ XmlElement element = element("w:hyperlink", map(
+ "w:anchor", "start",
+ "w:tgtFrame", ""
+ ));
+ assertThat(
+ readSuccess(bodyReader(), element),
+ isHyperlink(hasNoTargetFrame())
+ );
+ }
+
+ @Test
public void goBackBookmarkIsIgnored() {
XmlElement element = element("w:bookmarkStart", map("w:name", "_GoBack"));
assertThat(
diff --git a/src/test/java/org/zwobble/mammoth/tests/docx/DocumentMatchers.java b/src/test/java/org/zwobble/mammoth/tests/docx/DocumentMatchers.java
index d0a1fe6..53632c1 100644
--- a/src/test/java/org/zwobble/mammoth/tests/docx/DocumentMatchers.java
+++ b/src/test/java/org/zwobble/mammoth/tests/docx/DocumentMatchers.java
@@ -91,7 +91,7 @@ public class DocumentMatchers {
return hasProperty("href", equalTo(Optional.of(href)));
}
- static Matcher<Hyperlink> hasBlankHref() {
+ static Matcher<Hyperlink> hasNoHref() {
return hasProperty("href", equalTo(Optional.empty()));
}
@@ -99,11 +99,15 @@ public class DocumentMatchers {
return hasProperty("anchor", equalTo(Optional.of(anchor)));
}
- static Matcher<Hyperlink> hasBlankAnchor() {
+ static Matcher<Hyperlink> hasNoAnchor() {
return hasProperty("anchor", equalTo(Optional.empty()));
}
static Matcher<Hyperlink> hasTargetFrame(String targetFrame) {
return hasProperty("targetFrame", equalTo(Optional.of(targetFrame)));
}
+
+ static Matcher<Hyperlink> hasNoTargetFrame() {
+ return hasProperty("targetFrame", equalTo(Optional.empty()));
+ }
}