diff options
5 files changed, 40 insertions, 18 deletions
diff --git a/src/main/java/org/zwobble/mammoth/documents/Run.java b/src/main/java/org/zwobble/mammoth/documents/Run.java index 45ab77c..ed4c65e 100644 --- a/src/main/java/org/zwobble/mammoth/documents/Run.java +++ b/src/main/java/org/zwobble/mammoth/documents/Run.java @@ -4,22 +4,28 @@ import java.util.List; import java.util.Optional; public class Run implements DocumentElement, HasChildren { - private final List<DocumentElement> children; + private final boolean isBold; private final Optional<Style> style; + private final List<DocumentElement> children; - public Run(Optional<Style> style, List<DocumentElement> children) { + public Run(boolean isBold, Optional<Style> style, List<DocumentElement> children) { + this.isBold = isBold; this.children = children; this.style = style; } - public List<DocumentElement> getChildren() { - return children; + public boolean isBold() { + return isBold; } public Optional<Style> getStyle() { return style; } + public List<DocumentElement> getChildren() { + return children; + } + @Override public <T> T accept(DocumentElementVisitor<T> visitor) { return visitor.visit(this); diff --git a/src/main/java/org/zwobble/mammoth/docx/BodyXmlReader.java b/src/main/java/org/zwobble/mammoth/docx/BodyXmlReader.java index 8cfc4f6..e9fca9c 100644 --- a/src/main/java/org/zwobble/mammoth/docx/BodyXmlReader.java +++ b/src/main/java/org/zwobble/mammoth/docx/BodyXmlReader.java @@ -49,7 +49,7 @@ public class BodyXmlReader { return ReadResult.map( readRunStyle(properties), readElements(element.children()), - (style, children) -> new Run(style, children)); + (style, children) -> new Run(false, style, children)); } private Result<Optional<Style>> readRunStyle(XmlElementLike properties) { diff --git a/src/test/java/org/zwobble/mammoth/tests/documents/DocumentElementMakers.java b/src/test/java/org/zwobble/mammoth/tests/documents/DocumentElementMakers.java index d5a23fb..9eb8873 100644 --- a/src/test/java/org/zwobble/mammoth/tests/documents/DocumentElementMakers.java +++ b/src/test/java/org/zwobble/mammoth/tests/documents/DocumentElementMakers.java @@ -5,6 +5,7 @@ import com.natpryce.makeiteasy.Property; import org.zwobble.mammoth.documents.DocumentElement; import org.zwobble.mammoth.documents.HasChildren; import org.zwobble.mammoth.documents.Paragraph; +import org.zwobble.mammoth.documents.Run; import java.util.List; import java.util.Optional; @@ -20,4 +21,10 @@ public class DocumentElementMakers { Optional.empty(), Optional.empty(), propertyLookup.valueOf(CHILDREN, list())); + + public static final Instantiator<Run> RUN = + propertyLookup -> new Run( + false, + Optional.empty(), + propertyLookup.valueOf(CHILDREN, list())); } 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 49d906f..86b58f6 100644 --- a/src/test/java/org/zwobble/mammoth/tests/docx/BodyXmlTests.java +++ b/src/test/java/org/zwobble/mammoth/tests/docx/BodyXmlTests.java @@ -4,11 +4,11 @@ import com.natpryce.makeiteasy.Maker; import org.hamcrest.Matcher; import org.hamcrest.Matchers; import org.junit.Test; -import org.zwobble.mammoth.results.Result; import org.zwobble.mammoth.documents.*; import org.zwobble.mammoth.docx.BodyXmlReader; import org.zwobble.mammoth.docx.Numbering; import org.zwobble.mammoth.docx.Styles; +import org.zwobble.mammoth.results.Result; import org.zwobble.mammoth.results.Warning; import org.zwobble.mammoth.tests.DeepReflectionMatcher; import org.zwobble.mammoth.xml.XmlElement; @@ -21,11 +21,11 @@ import java.util.Optional; import static com.natpryce.makeiteasy.MakeItEasy.*; import static java.util.Arrays.asList; import static org.hamcrest.MatcherAssert.assertThat; +import static org.hamcrest.Matchers.equalTo; import static org.hamcrest.Matchers.hasProperty; import static org.zwobble.mammoth.results.Warning.warning; import static org.zwobble.mammoth.tests.DeepReflectionMatcher.deepEquals; -import static org.zwobble.mammoth.tests.documents.DocumentElementMakers.CHILDREN; -import static org.zwobble.mammoth.tests.documents.DocumentElementMakers.PARAGRAPH; +import static org.zwobble.mammoth.tests.documents.DocumentElementMakers.*; import static org.zwobble.mammoth.tests.docx.BodyXmlReaderMakers.*; import static org.zwobble.mammoth.util.MammothLists.list; import static org.zwobble.mammoth.util.MammothMaps.map; @@ -171,7 +171,7 @@ public class BodyXmlTests { XmlElement element = runXml(list( element("w:rPr", list( element("w:rStyle", map("w:val", "Heading1Char")))))); - + assertThat( read(a(bodyReader), element), isResult( @@ -179,6 +179,15 @@ public class BodyXmlTests { list(warning("Run style with ID Heading1Char was referenced but not defined in the document")))); } + @Test + public void runIsNotBoldIfBoldElementIsNotPresent() { + XmlElement element = runXmlWithProperties(); + + assertThat( + readSuccess(a(bodyReader), element), + hasProperty("bold", equalTo(false))); + } + private static DocumentElement readSuccess(Maker<BodyXmlReader> reader, XmlElement element) { Result<DocumentElement> result = read(reader, element); assertThat(result.getWarnings(), deepEquals(list())); @@ -202,6 +211,10 @@ public class BodyXmlTests { return element("w:r", children); } + private XmlElement runXmlWithProperties(XmlNode... children) { + return element("w:r", list(element("w:rPr", asList(children)))); + } + private XmlElement textXml(String value) { return element("w:t", list(XmlNodes.text(value))); } @@ -237,7 +250,7 @@ public class BodyXmlTests { } private Run run(DocumentElement... children) { - return new Run(Optional.empty(), asList(children)); + return make(a(RUN, with(CHILDREN, asList(children)))); } private Text text(String value) { diff --git a/src/test/java/org/zwobble/mammoth/tests/docx/DocumentXmlTests.java b/src/test/java/org/zwobble/mammoth/tests/docx/DocumentXmlTests.java index 9d7703b..5370db3 100644 --- a/src/test/java/org/zwobble/mammoth/tests/docx/DocumentXmlTests.java +++ b/src/test/java/org/zwobble/mammoth/tests/docx/DocumentXmlTests.java @@ -1,23 +1,19 @@ package org.zwobble.mammoth.tests.docx; import org.junit.Test; -import org.zwobble.mammoth.results.Result; import org.zwobble.mammoth.documents.Document; -import org.zwobble.mammoth.documents.Run; import org.zwobble.mammoth.documents.Text; import org.zwobble.mammoth.docx.BodyXmlReader; import org.zwobble.mammoth.docx.DocumentXmlReader; +import org.zwobble.mammoth.results.Result; import org.zwobble.mammoth.xml.XmlElement; import org.zwobble.mammoth.xml.XmlNodes; -import java.util.Optional; - import static com.natpryce.makeiteasy.MakeItEasy.*; import static org.hamcrest.MatcherAssert.assertThat; import static org.zwobble.mammoth.results.Result.success; import static org.zwobble.mammoth.tests.DeepReflectionMatcher.deepEquals; -import static org.zwobble.mammoth.tests.documents.DocumentElementMakers.CHILDREN; -import static org.zwobble.mammoth.tests.documents.DocumentElementMakers.PARAGRAPH; +import static org.zwobble.mammoth.tests.documents.DocumentElementMakers.*; import static org.zwobble.mammoth.util.MammothLists.list; import static org.zwobble.mammoth.xml.XmlNodes.element; @@ -39,7 +35,7 @@ public class DocumentXmlTests { document, deepEquals(success(new Document(list( make(a(PARAGRAPH, with(CHILDREN, list( - new Run(Optional.empty(), list( - new Text("Hello!")))))))))))); + make(a(RUN, with(CHILDREN, list( + new Text("Hello!")))))))))))))); } } |
