aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorMichael Williamson <mike@zwobble.org>2016-02-13 19:10:17 +0000
committerMichael Williamson <mike@zwobble.org>2016-02-13 19:10:17 +0000
commit9415477ff50a54d51ed45968dd49fd524144ce42 (patch)
tree5639d0679d811a61afdf0c0d94f54bbcb6b6401c /src
parentf857963e6dc2675099e793472b8c1401cc3836a1 (diff)
Read underlined runs
Diffstat (limited to 'src')
-rw-r--r--src/main/java/org/zwobble/mammoth/documents/Run.java7
-rw-r--r--src/main/java/org/zwobble/mammoth/docx/BodyXmlReader.java5
-rw-r--r--src/test/java/org/zwobble/mammoth/tests/documents/DocumentElementMakers.java1
-rw-r--r--src/test/java/org/zwobble/mammoth/tests/docx/BodyXmlTests.java18
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()));