aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/org/zwobble/mammoth/Mammoth.java
diff options
context:
space:
mode:
authorMichael Williamson <mike@zwobble.org>2016-02-16 22:01:46 +0000
committerMichael Williamson <mike@zwobble.org>2016-02-16 22:01:46 +0000
commit6181e50cc197f5f9a71374efe256410e1eceffe3 (patch)
tree04178188820ed3b5865dfee48fdf92d159960e2f /src/main/java/org/zwobble/mammoth/Mammoth.java
parent97d89445e8a75c3e1dc596878f1a9a944f9317d5 (diff)
Wire up style reading
Diffstat (limited to 'src/main/java/org/zwobble/mammoth/Mammoth.java')
-rw-r--r--src/main/java/org/zwobble/mammoth/Mammoth.java22
1 files changed, 18 insertions, 4 deletions
diff --git a/src/main/java/org/zwobble/mammoth/Mammoth.java b/src/main/java/org/zwobble/mammoth/Mammoth.java
index d466bed..5830c6a 100644
--- a/src/main/java/org/zwobble/mammoth/Mammoth.java
+++ b/src/main/java/org/zwobble/mammoth/Mammoth.java
@@ -8,14 +8,13 @@ import org.zwobble.mammoth.xml.XmlElement;
import java.io.File;
import java.io.IOException;
+import java.util.Optional;
import java.util.zip.ZipFile;
public class Mammoth {
public static Result<String> convertToHtml(File file) {
try (DocxFile zipFile = new ZippedDocxFile(new ZipFile(file))) {
- XmlElement documentXml = OfficeXml.parseXml(zipFile.getInputStream("word/document.xml"));
-
- Styles styles = Styles.EMPTY;
+ Styles styles = readStyles(zipFile);
Numbering numbering = Numbering.EMPTY;
Relationships relationships = Relationships.EMPTY;
ContentTypes contentTypes = ContentTypes.DEFAULT;
@@ -32,7 +31,7 @@ public class Mammoth {
fileReader), notes);
// TODO: prefix
String idPrefix = "document";
- return reader.readElement(documentXml)
+ return reader.readElement(parseOfficeXml(zipFile, "word/document.xml"))
.map(nodes -> DocumentConverter.convertToHtml(idPrefix, nodes))
.map(Html::stripEmpty)
.map(Html::collapse)
@@ -41,4 +40,19 @@ public class Mammoth {
throw new UnsupportedOperationException("Should return a result of failure");
}
}
+
+ private static Styles readStyles(DocxFile file) throws IOException {
+ return tryParseOfficeXml(file, "word/styles.xml")
+ .map(StylesXml::readStylesXmlElement)
+ .orElse(Styles.EMPTY);
+ }
+
+ private static Optional<XmlElement> tryParseOfficeXml(DocxFile zipFile, String name) throws IOException {
+ return zipFile.tryGetInputStream(name).map(OfficeXml::parseXml);
+ }
+
+ private static XmlElement parseOfficeXml(DocxFile zipFile, String name) throws IOException {
+ return tryParseOfficeXml(zipFile, name)
+ .orElseThrow(() -> new IOException("Missing entry in file: " + name));
+ }
}