diff options
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( |
