From 62ccce26f2b44ecd5df06670d0e935d7d57d7d4d Mon Sep 17 00:00:00 2001 From: Michael Williamson Date: Wed, 31 Aug 2022 21:20:01 +0100 Subject: Only use the alt text of image elements as a fallback --- NEWS | 6 ++++++ lib/images.js | 4 +++- test/images.tests.js | 25 +++++++++++++++++++++++++ 3 files changed, 34 insertions(+), 1 deletion(-) diff --git a/NEWS b/NEWS index 9f6fe81..b9c9d40 100644 --- a/NEWS +++ b/NEWS @@ -1,3 +1,9 @@ +# 1.5.0 + +* Only use the alt text of image elements as a fallback. If an alt attribute is + returned from the function passed to mammoth.images.imgElement, that value + will now be preferred to the alt text of the image element. + # 1.4.21 * Ignore w:u elements when w:val is missing. diff --git a/lib/images.js b/lib/images.js index c7d3ef5..fc45115 100644 --- a/lib/images.js +++ b/lib/images.js @@ -8,10 +8,12 @@ exports.imgElement = imgElement; function imgElement(func) { return function(element, messages) { return promises.when(func(element)).then(function(result) { - var attributes = _.clone(result); + var attributes = {}; if (element.altText) { attributes.alt = element.altText; } + _.extend(attributes, result); + return [Html.freshElement("img", attributes)]; }); }; diff --git a/test/images.tests.js b/test/images.tests.js index 9a9344d..cd8d51b 100644 --- a/test/images.tests.js +++ b/test/images.tests.js @@ -83,5 +83,30 @@ test('mammoth.images.imgElement()', { }) )); }); + }, + + 'image alt text can be overriden by alt attribute returned from function': function() { + var imageBuffer = new Buffer("abc"); + var image = new documents.Image({ + readImage: function(encoding) { + return promises.when(imageBuffer.toString(encoding)); + }, + contentType: "image/jpeg", + altText: "" + }); + + var result = mammoth.images.imgElement(function(image) { + return {alt: "", src: ""}; + })(image); + + return result.then(function(result) { + assertThat(result, contains( + hasProperties({ + tag: hasProperties({ + attributes: equalTo({alt: "", src: ""}) + }) + }) + )); + }); } }); -- cgit v1.2.3