summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTobias Bocanegra <tripod@adobe.com>2020-09-07 14:52:12 +0900
committerTobias Bocanegra <tripod@adobe.com>2020-09-07 14:52:26 +0900
commit091111ce4b0bece922d814a63e8f294cf52b79a6 (patch)
tree8eca9cef0405c571c659454e06092b3bedfe30f2
parent50ed890db42c2cf6a1dbdf33c767059b654756df (diff)
Fix: Underline with value 'none' is wrongly detected
fixes #249
-rw-r--r--lib/docx/body-reader.js11
-rw-r--r--test/docx/body-reader.tests.js7
2 files changed, 17 insertions, 1 deletions
diff --git a/lib/docx/body-reader.js b/lib/docx/body-reader.js
index e7e306c..ad4f409 100644
--- a/lib/docx/body-reader.js
+++ b/lib/docx/body-reader.js
@@ -70,7 +70,7 @@ function BodyReader(options) {
font: element.firstOrEmpty("w:rFonts").attributes["w:ascii"],
fontSize: fontSize,
isBold: readBooleanElement(element.first("w:b")),
- isUnderline: readBooleanElement(element.first("w:u")),
+ isUnderline: readUnderline(element.first("w:u")),
isItalic: readBooleanElement(element.first("w:i")),
isStrikethrough: readBooleanElement(element.first("w:strike")),
isSmallCaps: readBooleanElement(element.first("w:smallCaps"))
@@ -78,6 +78,15 @@ function BodyReader(options) {
});
}
+ function readUnderline(element) {
+ if (element) {
+ var value = element.attributes["w:val"];
+ return value !== "false" && value !== "0" && value !== "none";
+ } else {
+ return false;
+ }
+ }
+
function readBooleanElement(element) {
if (element) {
var value = element.attributes["w:val"];
diff --git a/test/docx/body-reader.tests.js b/test/docx/body-reader.tests.js
index 48f6b16..50506ae 100644
--- a/test/docx/body-reader.tests.js
+++ b/test/docx/body-reader.tests.js
@@ -459,6 +459,13 @@ test("isUnderline is true if underline element is present", function() {
assert.equal(run.isUnderline, true);
});
+test("isUnderline is false if underline element is 'none'", function() {
+ var underlineXml = new XmlElement("w:u", {"w:val": "none"});
+ var runXml = runWithProperties([underlineXml]);
+ var run = readXmlElementValue(runXml);
+ assert.equal(run.isUnderline, false);
+});
+
test("isStrikethrough is false if strikethrough element is not present", function() {
var runXml = runWithProperties([]);
var run = readXmlElementValue(runXml);