From 774a6827c4ccd330727224ba4e37d556dbd06715 Mon Sep 17 00:00:00 2001 From: Michael Williamson Date: Wed, 31 Aug 2022 21:56:10 +0100 Subject: Only use the alt text of image elements as a fallback --- NEWS | 6 +++++- .../internal/conversion/InternalImageConverter.java | 3 ++- .../tests/conversion/InternalImageConverterTests.java | 19 +++++++++++++++++++ 3 files changed, 26 insertions(+), 2 deletions(-) diff --git a/NEWS b/NEWS index 81779f9..753a3ff 100644 --- a/NEWS +++ b/NEWS @@ -1,4 +1,4 @@ -# 1.4.3 +# 1.5.0 * Convert symbols in supported fonts to corresponding Unicode characters. @@ -11,6 +11,10 @@ * Ignore w:u elements when w:val is missing. +* Only use the alt text of image elements as a fallback. If an alt attribute is + returned from ImgElement.convert, that value will now be preferred to the alt + text of the image element. + # 1.4.2 * Support soft hyphens. diff --git a/src/main/java/org/zwobble/mammoth/internal/conversion/InternalImageConverter.java b/src/main/java/org/zwobble/mammoth/internal/conversion/InternalImageConverter.java index 3aad8e8..4ef95bc 100644 --- a/src/main/java/org/zwobble/mammoth/internal/conversion/InternalImageConverter.java +++ b/src/main/java/org/zwobble/mammoth/internal/conversion/InternalImageConverter.java @@ -48,8 +48,9 @@ public class InternalImageConverter { } }; - Map attributes = new HashMap<>(PassThroughException.wrap(() -> imgElement.convert(image))); + Map attributes = new HashMap<>(); internalImage.getAltText().ifPresent(altText -> attributes.put("alt", altText)); + attributes.putAll(PassThroughException.wrap(() -> imgElement.convert(image))); return list(Html.element("img", attributes)); }) .orElse(list()); diff --git a/src/test/java/org/zwobble/mammoth/tests/conversion/InternalImageConverterTests.java b/src/test/java/org/zwobble/mammoth/tests/conversion/InternalImageConverterTests.java index e5b49a6..5a9498b 100644 --- a/src/test/java/org/zwobble/mammoth/tests/conversion/InternalImageConverterTests.java +++ b/src/test/java/org/zwobble/mammoth/tests/conversion/InternalImageConverterTests.java @@ -54,4 +54,23 @@ public class InternalImageConverterTests { deepEquals(list(Html.element("img", map("alt", "", "src", "")))) ); } + + @Test + public void imageAltTextCanBeOverriddenByAltAttributeReturnedFromFunction() throws IOException { + Image internalImage = new Image( + Optional.of(""), + Optional.of("image/jpeg"), + () -> new ByteArrayInputStream(new byte[]{97, 98, 99}) + ); + + InternalImageConverter imageConverter = InternalImageConverter.imgElement(image -> { + return map("alt", "", "src", ""); + }); + List result = imageConverter.convert(internalImage); + + assertThat( + result, + deepEquals(list(Html.element("img", map("alt", "", "src", "")))) + ); + } } -- cgit v1.2.3