aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/main/java/org/zwobble/mammoth/docx/BodyXmlReader.java9
-rw-r--r--src/main/java/org/zwobble/mammoth/xml/NullXmlElement.java5
-rw-r--r--src/main/java/org/zwobble/mammoth/xml/XmlElement.java5
-rw-r--r--src/main/java/org/zwobble/mammoth/xml/XmlElementLike.java1
-rw-r--r--src/test/java/org/zwobble/mammoth/tests/docx/BodyXmlTests.java9
5 files changed, 28 insertions, 1 deletions
diff --git a/src/main/java/org/zwobble/mammoth/docx/BodyXmlReader.java b/src/main/java/org/zwobble/mammoth/docx/BodyXmlReader.java
index e9fca9c..2982916 100644
--- a/src/main/java/org/zwobble/mammoth/docx/BodyXmlReader.java
+++ b/src/main/java/org/zwobble/mammoth/docx/BodyXmlReader.java
@@ -49,7 +49,14 @@ public class BodyXmlReader {
return ReadResult.map(
readRunStyle(properties),
readElements(element.children()),
- (style, children) -> new Run(false, style, children));
+ (style, children) -> new Run(
+ isBold(properties),
+ style,
+ children));
+ }
+
+ private boolean isBold(XmlElementLike properties) {
+ return properties.hasChild("w:b");
}
private Result<Optional<Style>> readRunStyle(XmlElementLike properties) {
diff --git a/src/main/java/org/zwobble/mammoth/xml/NullXmlElement.java b/src/main/java/org/zwobble/mammoth/xml/NullXmlElement.java
index 05bfa78..0bec026 100644
--- a/src/main/java/org/zwobble/mammoth/xml/NullXmlElement.java
+++ b/src/main/java/org/zwobble/mammoth/xml/NullXmlElement.java
@@ -9,6 +9,11 @@ public class NullXmlElement implements XmlElementLike {
}
@Override
+ public boolean hasChild(String name) {
+ return false;
+ }
+
+ @Override
public XmlElementLike findChildOrEmpty(String name) {
return this;
}
diff --git a/src/main/java/org/zwobble/mammoth/xml/XmlElement.java b/src/main/java/org/zwobble/mammoth/xml/XmlElement.java
index c487a7e..cf1dc67 100644
--- a/src/main/java/org/zwobble/mammoth/xml/XmlElement.java
+++ b/src/main/java/org/zwobble/mammoth/xml/XmlElement.java
@@ -72,6 +72,11 @@ public class XmlElement implements XmlNode, XmlElementLike {
}
@Override
+ public boolean hasChild(String name) {
+ return findChildrenIterable(name).iterator().hasNext();
+ }
+
+ @Override
public XmlElementLike findChildOrEmpty(String name) {
return getFirst(findChildrenIterable(name), NullXmlElement.INSTANCE);
}
diff --git a/src/main/java/org/zwobble/mammoth/xml/XmlElementLike.java b/src/main/java/org/zwobble/mammoth/xml/XmlElementLike.java
index 06193a7..adba7c8 100644
--- a/src/main/java/org/zwobble/mammoth/xml/XmlElementLike.java
+++ b/src/main/java/org/zwobble/mammoth/xml/XmlElementLike.java
@@ -3,6 +3,7 @@ package org.zwobble.mammoth.xml;
import java.util.Optional;
public interface XmlElementLike {
+ boolean hasChild(String name);
XmlElementLike findChildOrEmpty(String name);
Optional<String> getAttributeOrNone(String name);
}
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 86b58f6..5f4f379 100644
--- a/src/test/java/org/zwobble/mammoth/tests/docx/BodyXmlTests.java
+++ b/src/test/java/org/zwobble/mammoth/tests/docx/BodyXmlTests.java
@@ -188,6 +188,15 @@ public class BodyXmlTests {
hasProperty("bold", equalTo(false)));
}
+ @Test
+ public void runIsBoldIfBoldElementIsPresent() {
+ XmlElement element = runXmlWithProperties(element("w:b"));
+
+ assertThat(
+ readSuccess(a(bodyReader), element),
+ hasProperty("bold", equalTo(true)));
+ }
+
private static DocumentElement readSuccess(Maker<BodyXmlReader> reader, XmlElement element) {
Result<DocumentElement> result = read(reader, element);
assertThat(result.getWarnings(), deepEquals(list()));