diff options
Diffstat (limited to 'src')
4 files changed, 31 insertions, 0 deletions
diff --git a/src/main/java/org/zwobble/mammoth/documents/Run.java b/src/main/java/org/zwobble/mammoth/documents/Run.java index d4d4a9f..73349ba 100644 --- a/src/main/java/org/zwobble/mammoth/documents/Run.java +++ b/src/main/java/org/zwobble/mammoth/documents/Run.java @@ -6,17 +6,20 @@ import java.util.Optional; public class Run implements DocumentElement, HasChildren { private final boolean isBold; private final boolean isItalic; + private final boolean isUnderline; private final Optional<Style> style; private final List<DocumentElement> children; public Run( boolean isBold, boolean isItalic, + boolean isUnderline, Optional<Style> style, List<DocumentElement> children) { this.isBold = isBold; this.isItalic = isItalic; + this.isUnderline = isUnderline; this.style = style; this.children = children; } @@ -29,6 +32,10 @@ public class Run implements DocumentElement, HasChildren { return isItalic; } + public boolean isUnderline() { + return isUnderline; + } + public Optional<Style> getStyle() { return style; } diff --git a/src/main/java/org/zwobble/mammoth/docx/BodyXmlReader.java b/src/main/java/org/zwobble/mammoth/docx/BodyXmlReader.java index a369ebc..1cc7a34 100644 --- a/src/main/java/org/zwobble/mammoth/docx/BodyXmlReader.java +++ b/src/main/java/org/zwobble/mammoth/docx/BodyXmlReader.java @@ -52,6 +52,7 @@ public class BodyXmlReader { (style, children) -> new Run( isBold(properties), isItalic(properties), + isUnderline(properties), style, children)); } @@ -64,6 +65,10 @@ public class BodyXmlReader { return properties.hasChild("w:i"); } + private boolean isUnderline(XmlElementLike properties) { + return properties.hasChild("w:u"); + } + private Result<Optional<Style>> readRunStyle(XmlElementLike properties) { return readStyle(properties, "w:rStyle", "Run", styles::findCharacterStyleById); } 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 3ff2afe..78ab06e 100644 --- a/src/test/java/org/zwobble/mammoth/tests/documents/DocumentElementMakers.java +++ b/src/test/java/org/zwobble/mammoth/tests/documents/DocumentElementMakers.java @@ -26,6 +26,7 @@ public class DocumentElementMakers { propertyLookup -> new Run( false, false, + 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 03d099b..0d99525 100644 --- a/src/test/java/org/zwobble/mammoth/tests/docx/BodyXmlTests.java +++ b/src/test/java/org/zwobble/mammoth/tests/docx/BodyXmlTests.java @@ -215,6 +215,24 @@ public class BodyXmlTests { hasProperty("italic", equalTo(true))); } + @Test + public void runIsNotUnderlinedIfUnderlineElementIsNotPresent() { + XmlElement element = runXmlWithProperties(); + + assertThat( + readSuccess(a(bodyReader), element), + hasProperty("underline", equalTo(false))); + } + + @Test + public void runIsUnderlinedIfUnderlineElementIsPresent() { + XmlElement element = runXmlWithProperties(element("w:u")); + + assertThat( + readSuccess(a(bodyReader), element), + hasProperty("underline", equalTo(true))); + } + private static DocumentElement readSuccess(Maker<BodyXmlReader> reader, XmlElement element) { Result<DocumentElement> result = read(reader, element); assertThat(result.getWarnings(), deepEquals(list())); |
