diff options
Diffstat (limited to 'src')
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())); |
