diff options
| author | Michael Williamson <mike@zwobble.org> | 2025-06-08 14:06:14 +0100 |
|---|---|---|
| committer | Michael Williamson <mike@zwobble.org> | 2025-06-08 14:06:14 +0100 |
| commit | 18a232fac243245a2b91f0dbba163c62c5b9cd2e (patch) | |
| tree | f26137d1cb7f14cca6c42256ffb383f62c733482 | |
| parent | ee76b524a54ff235416458abb8b17bedcb478eb8 (diff) | |
Ignore deleted table rows
| -rw-r--r-- | NEWS | 2 | ||||
| -rw-r--r-- | lib/docx/body-reader.js | 6 | ||||
| -rw-r--r-- | test/docx/body-reader.tests.js | 37 |
3 files changed, 45 insertions, 0 deletions
@@ -7,6 +7,8 @@ elements, such as table cells. Previously, the wrapping elements would have been ignored. +* Ignore deleted table rows. + # 1.9.1 * Ignore AlternateContent elements when there is no Fallback element. diff --git a/lib/docx/body-reader.js b/lib/docx/body-reader.js index 2ab5ba7..ad2dd53 100644 --- a/lib/docx/body-reader.js +++ b/lib/docx/body-reader.js @@ -480,6 +480,12 @@ function BodyReader(options) { function readTableRow(element) { var properties = element.firstOrEmpty("w:trPr"); + + var isDeleted = !!properties.first("w:del"); + if (isDeleted) { + return emptyResult(); + } + var isHeader = !!properties.first("w:tblHeader"); return readXmlElements(element.children).map(function(children) { return documents.TableRow(children, {isHeader: isHeader}); diff --git a/test/docx/body-reader.tests.js b/test/docx/body-reader.tests.js index 9413b2e..c60ef0d 100644 --- a/test/docx/body-reader.tests.js +++ b/test/docx/body-reader.tests.js @@ -1267,6 +1267,43 @@ test("no vertical cell merging if merged cells do not line up", function() { ])); }); +test("when row is marked as deleted in row properties then row is ignored", function() { + var tableXml = xml.element("w:tbl", {}, [ + xml.element("w:tr", {}, [ + xml.element("w:tc", {}, [ + xml.element("w:p", {}, [ + runOfText("Row 1") + ]) + ]) + ]), + + xml.element("w:tr", {}, [ + xml.element("w:trPr", {}, [ + xml.element("w:del") + ]), + xml.element("w:tc", {}, [ + xml.element("w:p", {}, [ + runOfText("Row 2") + ]) + ]) + ]) + ]); + + var result = readXmlElement(tableXml); + + assert.deepEqual(result.value, new documents.Table([ + new documents.TableRow([ + new documents.TableCell([ + new documents.Paragraph([ + new documents.Run([ + new documents.Text("Row 1") + ]) + ]) + ]) + ]) + ])); +}); + test("warning if non-row in table", function() { var tableXml = new XmlElement("w:tbl", {}, [ new XmlElement("w:p") |
