From 0f9ef005f063198ea2e16ca36beaead4bd5e3824 Mon Sep 17 00:00:00 2001 From: Michael Williamson Date: Thu, 14 Apr 2016 21:12:07 +0100 Subject: Add .NET output --- .../mammoth/internal/conversion/DocumentToHtml.java | 20 ++++++++++---------- .../zwobble/mammoth/internal/docx/BodyXmlReader.java | 4 ++-- .../org/zwobble/mammoth/internal/docx/DocxFile.java | 5 ----- .../org/zwobble/mammoth/internal/docx/DocxFiles.java | 11 +++++++++++ .../mammoth/internal/xml/parsing/XmlParser.java | 16 ++++++++-------- 5 files changed, 31 insertions(+), 25 deletions(-) create mode 100644 src/main/java/org/zwobble/mammoth/internal/docx/DocxFiles.java (limited to 'src/main/java/org') diff --git a/src/main/java/org/zwobble/mammoth/internal/conversion/DocumentToHtml.java b/src/main/java/org/zwobble/mammoth/internal/conversion/DocumentToHtml.java index 19af0bc..b60e825 100644 --- a/src/main/java/org/zwobble/mammoth/internal/conversion/DocumentToHtml.java +++ b/src/main/java/org/zwobble/mammoth/internal/conversion/DocumentToHtml.java @@ -173,16 +173,6 @@ public class DocumentToHtml { return list(Html.collapsibleElement("a", attributes, convertChildrenToHtml(hyperlink))); } - private String generateHref(Hyperlink hyperlink) { - if (hyperlink.getHref().isPresent()) { - return hyperlink.getHref().get(); - } else if (hyperlink.getAnchor().isPresent()) { - return "#" + generateId(hyperlink.getAnchor().get()); - } else { - return ""; - } - } - @Override public List visit(Bookmark bookmark) { return list(Html.element("a", map("id", generateId(bookmark.getName())), list(Html.FORCE_WRITE))); @@ -224,6 +214,16 @@ public class DocumentToHtml { }); } + private String generateHref(Hyperlink hyperlink) { + if (hyperlink.getHref().isPresent()) { + return hyperlink.getHref().get(); + } else if (hyperlink.getAnchor().isPresent()) { + return "#" + generateId(hyperlink.getAnchor().get()); + } else { + return ""; + } + } + private String generateNoteHtmlId(NoteType noteType, String noteId) { return generateId(noteTypeToIdFragment(noteType) + "-" + noteId); } diff --git a/src/main/java/org/zwobble/mammoth/internal/docx/BodyXmlReader.java b/src/main/java/org/zwobble/mammoth/internal/docx/BodyXmlReader.java index be2cbb9..113578d 100644 --- a/src/main/java/org/zwobble/mammoth/internal/docx/BodyXmlReader.java +++ b/src/main/java/org/zwobble/mammoth/internal/docx/BodyXmlReader.java @@ -268,7 +268,7 @@ public class BodyXmlReader { Optional title = element.getAttributeOrNone("o:title"); String relationshipId = element.getAttribute("r:id"); String imagePath = relationshipIdToDocxPath(relationshipId); - return readImage(imagePath, title, () -> DocxFile.getInputStream(file, imagePath)); + return readImage(imagePath, title, () -> DocxFiles.getInputStream(file, imagePath)); } private ReadResult readInline(XmlElement element) { @@ -290,7 +290,7 @@ public class BodyXmlReader { Optional linkRelationshipId = blip.getAttributeOrNone("r:link"); if (embedRelationshipId.isPresent()) { String imagePath = relationshipIdToDocxPath(embedRelationshipId.get()); - return readImage(imagePath, altText, () -> DocxFile.getInputStream(file, imagePath)); + return readImage(imagePath, altText, () -> DocxFiles.getInputStream(file, imagePath)); } else if (linkRelationshipId.isPresent()) { String imagePath = relationships.findRelationshipById(linkRelationshipId.get()).getTarget(); return readImage(imagePath, altText, () -> fileReader.getInputStream(imagePath)); diff --git a/src/main/java/org/zwobble/mammoth/internal/docx/DocxFile.java b/src/main/java/org/zwobble/mammoth/internal/docx/DocxFile.java index 8e73a04..23bddb1 100644 --- a/src/main/java/org/zwobble/mammoth/internal/docx/DocxFile.java +++ b/src/main/java/org/zwobble/mammoth/internal/docx/DocxFile.java @@ -6,10 +6,5 @@ import java.io.InputStream; import java.util.Optional; public interface DocxFile extends Closeable { - static InputStream getInputStream(DocxFile file, String name) throws IOException { - return file.tryGetInputStream(name) - .orElseThrow(() -> new IOException("Missing entry in file: " + name)); - } - Optional tryGetInputStream(String name) throws IOException; } diff --git a/src/main/java/org/zwobble/mammoth/internal/docx/DocxFiles.java b/src/main/java/org/zwobble/mammoth/internal/docx/DocxFiles.java new file mode 100644 index 0000000..5d06b76 --- /dev/null +++ b/src/main/java/org/zwobble/mammoth/internal/docx/DocxFiles.java @@ -0,0 +1,11 @@ +package org.zwobble.mammoth.internal.docx; + +import java.io.IOException; +import java.io.InputStream; + +public class DocxFiles { + static InputStream getInputStream(DocxFile file, String name) throws IOException { + return file.tryGetInputStream(name) + .orElseThrow(() -> new IOException("Missing entry in file: " + name)); + } +} diff --git a/src/main/java/org/zwobble/mammoth/internal/xml/parsing/XmlParser.java b/src/main/java/org/zwobble/mammoth/internal/xml/parsing/XmlParser.java index c76e989..e0cc5b4 100644 --- a/src/main/java/org/zwobble/mammoth/internal/xml/parsing/XmlParser.java +++ b/src/main/java/org/zwobble/mammoth/internal/xml/parsing/XmlParser.java @@ -5,8 +5,8 @@ import org.zwobble.mammoth.internal.xml.XmlElement; import org.zwobble.mammoth.internal.xml.XmlTextNode; import java.io.InputStream; -import java.util.ArrayDeque; -import java.util.Deque; +import java.util.ArrayList; +import java.util.List; import java.util.Map; import static org.zwobble.mammoth.internal.util.Maps.eagerMapKeys; @@ -32,14 +32,14 @@ public class XmlParser { } private class NodeGenerator implements SimpleSaxHandler { - private final Deque elementStack; + private final List elementStack; public NodeGenerator() { - elementStack = new ArrayDeque<>(); + elementStack = new ArrayList<>(); } public XmlElement getRoot() { - return elementStack.getFirst().build(); + return elementStack.get(0).build(); } @Override @@ -63,14 +63,14 @@ public class XmlParser { @Override public void endElement() { if (elementStack.size() > 1) { - XmlElementBuilder element = elementStack.removeLast(); - elementStack.getLast().addChild(element.build()); + XmlElementBuilder element = elementStack.remove(elementStack.size() - 1); + elementStack.get(elementStack.size() - 1).addChild(element.build()); } } @Override public void characters(String string) { - elementStack.getLast().addChild(new XmlTextNode(string)); + elementStack.get(elementStack.size() - 1).addChild(new XmlTextNode(string)); } } } -- cgit v1.2.3