diff options
| author | Michael Williamson <mike@zwobble.org> | 2016-02-16 22:01:46 +0000 |
|---|---|---|
| committer | Michael Williamson <mike@zwobble.org> | 2016-02-16 22:01:46 +0000 |
| commit | 6181e50cc197f5f9a71374efe256410e1eceffe3 (patch) | |
| tree | 04178188820ed3b5865dfee48fdf92d159960e2f /src/main/java/org/zwobble/mammoth/Mammoth.java | |
| parent | 97d89445e8a75c3e1dc596878f1a9a944f9317d5 (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.java | 22 |
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)); + } } |
