aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/org/zwobble/mammoth/internal/conversion/InternalImageConverter.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/org/zwobble/mammoth/internal/conversion/InternalImageConverter.java')
-rw-r--r--src/main/java/org/zwobble/mammoth/internal/conversion/InternalImageConverter.java58
1 files changed, 58 insertions, 0 deletions
diff --git a/src/main/java/org/zwobble/mammoth/internal/conversion/InternalImageConverter.java b/src/main/java/org/zwobble/mammoth/internal/conversion/InternalImageConverter.java
new file mode 100644
index 0000000..3aad8e8
--- /dev/null
+++ b/src/main/java/org/zwobble/mammoth/internal/conversion/InternalImageConverter.java
@@ -0,0 +1,58 @@
+package org.zwobble.mammoth.internal.conversion;
+
+import org.zwobble.mammoth.images.ImageConverter;
+import org.zwobble.mammoth.internal.documents.Image;
+import org.zwobble.mammoth.internal.html.Html;
+import org.zwobble.mammoth.internal.html.HtmlNode;
+import org.zwobble.mammoth.internal.util.PassThroughException;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.Optional;
+
+import static org.zwobble.mammoth.internal.util.Lists.list;
+
+public class InternalImageConverter {
+ private final ImageConverter.ImgElement imgElement;
+
+ public static InternalImageConverter imgElement(ImageConverter.ImgElement imgElement) {
+ return new InternalImageConverter(imgElement);
+ }
+
+ private InternalImageConverter(ImageConverter.ImgElement imgElement) {
+ this.imgElement = imgElement;
+ }
+
+ public List<HtmlNode> convert(Image internalImage) throws IOException {
+ // TODO: handle empty content type
+ return PassThroughException.unwrap(() -> {
+ return internalImage.getContentType()
+ .map(contentType -> {
+ org.zwobble.mammoth.images.Image image = new org.zwobble.mammoth.images.Image() {
+ @Override
+ public Optional<String> getAltText() {
+ return internalImage.getAltText();
+ }
+
+ @Override
+ public String getContentType() {
+ return contentType;
+ }
+
+ @Override
+ public InputStream getInputStream() throws IOException {
+ return internalImage.open();
+ }
+ };
+
+ Map<String, String> attributes = new HashMap<>(PassThroughException.wrap(() -> imgElement.convert(image)));
+ internalImage.getAltText().ifPresent(altText -> attributes.put("alt", altText));
+ return list(Html.element("img", attributes));
+ })
+ .orElse(list());
+ });
+ }
+}