From 3b306d59bb9abcbb061735d4ae0cc40522c2ce0c Mon Sep 17 00:00:00 2001 From: Michael Williamson Date: Sat, 13 Feb 2016 19:03:49 +0000 Subject: Read bold runs --- src/main/java/org/zwobble/mammoth/docx/BodyXmlReader.java | 9 ++++++++- src/main/java/org/zwobble/mammoth/xml/NullXmlElement.java | 5 +++++ src/main/java/org/zwobble/mammoth/xml/XmlElement.java | 5 +++++ src/main/java/org/zwobble/mammoth/xml/XmlElementLike.java | 1 + src/test/java/org/zwobble/mammoth/tests/docx/BodyXmlTests.java | 9 +++++++++ 5 files changed, 28 insertions(+), 1 deletion(-) (limited to 'src') 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> 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 @@ -8,6 +8,11 @@ public class NullXmlElement implements XmlElementLike { private NullXmlElement() { } + @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 @@ -71,6 +71,11 @@ public class XmlElement implements XmlNode, XmlElementLike { return findChildrenIterable(name).iterator().next(); } + @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 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 reader, XmlElement element) { Result result = read(reader, element); assertThat(result.getWarnings(), deepEquals(list())); -- cgit v1.2.3