aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/org
diff options
context:
space:
mode:
authorMichael Williamson <mike@zwobble.org>2015-12-31 21:05:46 +0000
committerMichael Williamson <mike@zwobble.org>2015-12-31 21:05:46 +0000
commit26af8fca2838549a185345458bbdb24db8a62d9b (patch)
treeb14490ce2b05de4f39cc1b349f951948dd37eb3c /src/main/java/org
parent10fb9097c90d531445a290e29dcb29f9bcc8885a (diff)
Add reading of styles XML
Diffstat (limited to 'src/main/java/org')
-rw-r--r--src/main/java/org/zwobble/mammoth/docx/Style.java15
-rw-r--r--src/main/java/org/zwobble/mammoth/docx/Styles.java22
-rw-r--r--src/main/java/org/zwobble/mammoth/docx/StylesXml.java31
3 files changed, 68 insertions, 0 deletions
diff --git a/src/main/java/org/zwobble/mammoth/docx/Style.java b/src/main/java/org/zwobble/mammoth/docx/Style.java
new file mode 100644
index 0000000..551a93f
--- /dev/null
+++ b/src/main/java/org/zwobble/mammoth/docx/Style.java
@@ -0,0 +1,15 @@
+package org.zwobble.mammoth.docx;
+
+import java.util.Optional;
+
+public class Style {
+ private final Optional<String> name;
+
+ public Style(Optional<String> name) {
+ this.name = name;
+ }
+
+ public Optional<String> getName() {
+ return name;
+ }
+}
diff --git a/src/main/java/org/zwobble/mammoth/docx/Styles.java b/src/main/java/org/zwobble/mammoth/docx/Styles.java
new file mode 100644
index 0000000..89098de
--- /dev/null
+++ b/src/main/java/org/zwobble/mammoth/docx/Styles.java
@@ -0,0 +1,22 @@
+package org.zwobble.mammoth.docx;
+
+import java.util.Map;
+import java.util.Optional;
+
+public class Styles {
+ private final Map<String, Style> paragraphStyles;
+ private final Map<String, Style> characterStyles;
+
+ public Styles(Map<String, Style> paragraphStyles, Map<String, Style> characterStyles) {
+ this.paragraphStyles = paragraphStyles;
+ this.characterStyles = characterStyles;
+ }
+
+ public Optional<Style> findParagraphStyleById(String id) {
+ return Optional.ofNullable(paragraphStyles.get(id));
+ }
+
+ public Optional<Style> findCharacterStyleById(String id) {
+ return Optional.ofNullable(characterStyles.get(id));
+ }
+}
diff --git a/src/main/java/org/zwobble/mammoth/docx/StylesXml.java b/src/main/java/org/zwobble/mammoth/docx/StylesXml.java
new file mode 100644
index 0000000..18061d1
--- /dev/null
+++ b/src/main/java/org/zwobble/mammoth/docx/StylesXml.java
@@ -0,0 +1,31 @@
+package org.zwobble.mammoth.docx;
+
+import org.zwobble.mammoth.xml.XmlElement;
+import org.zwobble.mammoth.xml.XmlElementList;
+
+import java.util.Map;
+
+import static com.google.common.collect.Iterables.filter;
+import static com.google.common.collect.Maps.immutableEntry;
+import static org.zwobble.mammoth.util.MammothMaps.toMap;
+
+public class StylesXml {
+ public static Styles readStylesXmlElement(XmlElement element) {
+ XmlElementList styleElements = element.findChildren("w:style");
+ return new Styles(
+ readStyles(styleElements, "paragraph"),
+ readStyles(styleElements, "character"));
+ }
+
+ private static Map<String, Style> readStyles(XmlElementList styleElements, String styleType) {
+ return toMap(
+ filter(styleElements, styleElement -> styleElement.getAttribute("w:type").equals(styleType)),
+ StylesXml::readStyle);
+ }
+
+ private static Map.Entry<String, Style> readStyle(XmlElement element) {
+ return immutableEntry(
+ element.getAttribute("w:styleId"),
+ new Style(element.findChildOrEmpty("w:name").getAttributeOrNone("w:val")));
+ }
+}