aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/main/java/org/zwobble/mammoth/internal/docx/Styles.java10
-rw-r--r--src/main/java/org/zwobble/mammoth/internal/docx/StylesXml.java4
-rw-r--r--src/test/java/org/zwobble/mammoth/tests/docx/BodyXmlTests.java8
-rw-r--r--src/test/java/org/zwobble/mammoth/tests/docx/StylesXmlTests.java11
4 files changed, 28 insertions, 5 deletions
diff --git a/src/main/java/org/zwobble/mammoth/internal/docx/Styles.java b/src/main/java/org/zwobble/mammoth/internal/docx/Styles.java
index 7271bd0..521fced 100644
--- a/src/main/java/org/zwobble/mammoth/internal/docx/Styles.java
+++ b/src/main/java/org/zwobble/mammoth/internal/docx/Styles.java
@@ -9,14 +9,16 @@ import static org.zwobble.mammoth.internal.util.Maps.lookup;
import static org.zwobble.mammoth.internal.util.Maps.map;
public class Styles {
- public static final Styles EMPTY = new Styles(map(), map());
+ public static final Styles EMPTY = new Styles(map(), map(), map());
private final Map<String, Style> paragraphStyles;
private final Map<String, Style> characterStyles;
+ private final Map<String, Style> tableStyles;
- public Styles(Map<String, Style> paragraphStyles, Map<String, Style> characterStyles) {
+ public Styles(Map<String, Style> paragraphStyles, Map<String, Style> characterStyles, Map<String, Style> tableStyles) {
this.paragraphStyles = paragraphStyles;
this.characterStyles = characterStyles;
+ this.tableStyles = tableStyles;
}
public Optional<Style> findParagraphStyleById(String id) {
@@ -26,4 +28,8 @@ public class Styles {
public Optional<Style> findCharacterStyleById(String id) {
return lookup(characterStyles, id);
}
+
+ public Optional<Style> findTableStyleById(String id) {
+ return lookup(tableStyles, id);
+ }
}
diff --git a/src/main/java/org/zwobble/mammoth/internal/docx/StylesXml.java b/src/main/java/org/zwobble/mammoth/internal/docx/StylesXml.java
index 625b830..b7320e0 100644
--- a/src/main/java/org/zwobble/mammoth/internal/docx/StylesXml.java
+++ b/src/main/java/org/zwobble/mammoth/internal/docx/StylesXml.java
@@ -16,7 +16,9 @@ public class StylesXml {
XmlElementList styleElements = element.findChildren("w:style");
return new Styles(
readStyles(styleElements, "paragraph"),
- readStyles(styleElements, "character"));
+ readStyles(styleElements, "character"),
+ readStyles(styleElements, "table")
+ );
}
private static Map<String, Style> readStyles(XmlElementList styleElements, String styleType) {
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 c5756ae..b6f8842 100644
--- a/src/test/java/org/zwobble/mammoth/tests/docx/BodyXmlTests.java
+++ b/src/test/java/org/zwobble/mammoth/tests/docx/BodyXmlTests.java
@@ -76,7 +76,9 @@ public class BodyXmlTests {
Style style = new Style("Heading1", Optional.of("Heading 1"));
Styles styles = new Styles(
map("Heading1", style),
- map());
+ map(),
+ map()
+ );
assertThat(
readSuccess(bodyReader(styles), element),
hasStyle(Optional.of(style)));
@@ -352,7 +354,9 @@ public class BodyXmlTests {
Style style = new Style("Heading1Char", Optional.of("Heading 1 Char"));
Styles styles = new Styles(
map(),
- map("Heading1Char", style));
+ map("Heading1Char", style),
+ map()
+ );
assertThat(
readSuccess(bodyReader(styles), element),
hasStyle(Optional.of(style)));
diff --git a/src/test/java/org/zwobble/mammoth/tests/docx/StylesXmlTests.java b/src/test/java/org/zwobble/mammoth/tests/docx/StylesXmlTests.java
index 55f3f13..84735b0 100644
--- a/src/test/java/org/zwobble/mammoth/tests/docx/StylesXmlTests.java
+++ b/src/test/java/org/zwobble/mammoth/tests/docx/StylesXmlTests.java
@@ -45,6 +45,17 @@ public class StylesXmlTests {
}
@Test
+ public void tableStyleCanBeFoundById() {
+ XmlElement element = element("w:styles", list(
+ element("w:style", map("w:type", "table", "w:styleId", "TableNormal"), list(
+ nameElement("Normal Table")))));
+
+ Styles styles = readStylesXmlElement(element);
+
+ assertEquals(Optional.of("Normal Table"), styles.findTableStyleById("TableNormal").get().getName());
+ }
+
+ @Test
public void paragraphAndCharacterStylesAreDistinct() {
XmlElement element = element("w:styles", list(
element("w:style", map("w:type", "paragraph", "w:styleId", "Heading1"), list(