diff options
| author | Michael Williamson <mike@zwobble.org> | 2022-08-31 21:46:48 +0100 |
|---|---|---|
| committer | Michael Williamson <mike@zwobble.org> | 2022-08-31 21:46:48 +0100 |
| commit | 6c4a8ccebb22e910c60fe75b0cff790b9e2fa1b5 (patch) | |
| tree | f011b4dad33e8175abb8e9d4e1e8789fa73694ed /src/main/java/org/zwobble/mammoth/internal/conversion/InternalImageConverter.java | |
| parent | b28d0c121cf4d2751610522d5d0b106b4fba911f (diff) | |
Move InternalImageConverter to conversion package
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.java | 58 |
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()); + }); + } +} |
