diff options
| author | Michael Williamson <mike@zwobble.org> | 2020-09-09 10:31:45 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2020-09-09 10:31:45 +0100 |
| commit | 542503a1f911109184be1fcb0a4902b9201ea54b (patch) | |
| tree | 051d4ebd396efd7d05245677c4319a2c6955e8ca | |
| parent | 1746e4a8ed68f17e413f156e7f5ee76303806ccc (diff) | |
| parent | 091111ce4b0bece922d814a63e8f294cf52b79a6 (diff) | |
Merge pull request #250 from adobe-rnd/fix-underline-none
Fix: Underline with value 'none' is wrongly detected
| -rw-r--r-- | lib/docx/body-reader.js | 11 | ||||
| -rw-r--r-- | test/docx/body-reader.tests.js | 7 |
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); |
