diff options
| author | Michael Williamson <mike@zwobble.org> | 2016-09-02 22:06:01 +0100 |
|---|---|---|
| committer | Michael Williamson <mike@zwobble.org> | 2016-09-02 22:06:01 +0100 |
| commit | f6c25f725de0c4ee65e4a0d25aa1c08774b2b809 (patch) | |
| tree | 2bdeb7d65616d5ab798d1f25079818def4f9eec8 | |
| parent | e5953b770484277e9119cef8358434cfad09df6b (diff) | |
Use alt text title if description is blank
| -rw-r--r-- | NEWS | 3 | ||||
| -rw-r--r-- | lib/docx/body-reader.js | 7 | ||||
| -rw-r--r-- | test/docx/body-reader.tests.js | 34 |
3 files changed, 42 insertions, 2 deletions
@@ -4,6 +4,9 @@ * Generate messages of type "error" instead of "warning" when image conversion throws an exception. + +* Use alt text title as alt text for images when the alt text description is + blank. # 1.1.0 diff --git a/lib/docx/body-reader.js b/lib/docx/body-reader.js index 7b3120d..519a50b 100644 --- a/lib/docx/body-reader.js +++ b/lib/docx/body-reader.js @@ -316,10 +316,15 @@ function BodyReader(options) { } function readBlip(element, blip) { - var altText = element.first("wp:docPr").attributes.descr; + var properties = element.first("wp:docPr").attributes; + var altText = isBlank(properties.descr) ? properties.title : properties.descr; return readImage(findBlipImageFile(blip), altText); } + function isBlank(value) { + return /^\s*$/.test(value); + } + function findBlipImageFile(blip) { var embedRelationshipId = blip.attributes["r:embed"]; var linkRelationshipid = blip.attributes["r:link"]; diff --git a/test/docx/body-reader.tests.js b/test/docx/body-reader.tests.js index 45b04ea..de9a6f9 100644 --- a/test/docx/body-reader.tests.js +++ b/test/docx/body-reader.tests.js @@ -464,6 +464,38 @@ test("can read inline pictures", function() { })))); }); +test("alt text title is used if alt text description is blank", function() { + var drawing = createInlineImage({ + blip: createEmbeddedBlip(IMAGE_RELATIONSHIP_ID), + description: " ", + title: "It's a hat" + }); + + var result = readEmbeddedImage(drawing); + + return promiseThat(result, isSuccess(contains(isImage({ + altText: "It's a hat", + contentType: "image/png", + buffer: IMAGE_BUFFER + })))); +}); + +test("alt text description is preferred to alt text title", function() { + var drawing = createInlineImage({ + blip: createEmbeddedBlip(IMAGE_RELATIONSHIP_ID), + description: "It's a hat", + title: "hat" + }); + + var result = readEmbeddedImage(drawing); + + return promiseThat(result, isSuccess(contains(isImage({ + altText: "It's a hat", + contentType: "image/png", + buffer: IMAGE_BUFFER + })))); +}); + test("can read anchored pictures", function() { var drawing = new XmlElement("w:drawing", {}, [ new XmlElement("wp:anchor", {}, [ @@ -715,7 +747,7 @@ function single(array) { function createInlineImage(options) { return new XmlElement("w:drawing", {}, [ new XmlElement("wp:inline", {}, [ - new XmlElement("wp:docPr", {descr: options.description}), + new XmlElement("wp:docPr", {descr: options.description, title: options.title}), new XmlElement("a:graphic", {}, [ new XmlElement("a:graphicData", {}, [ new XmlElement("pic:pic", {}, [ |
