summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichael Williamson <mike@zwobble.org>2025-06-08 14:06:14 +0100
committerMichael Williamson <mike@zwobble.org>2025-06-08 14:06:14 +0100
commit18a232fac243245a2b91f0dbba163c62c5b9cd2e (patch)
treef26137d1cb7f14cca6c42256ffb383f62c733482
parentee76b524a54ff235416458abb8b17bedcb478eb8 (diff)
Ignore deleted table rows
-rw-r--r--NEWS2
-rw-r--r--lib/docx/body-reader.js6
-rw-r--r--test/docx/body-reader.tests.js37
3 files changed, 45 insertions, 0 deletions
diff --git a/NEWS b/NEWS
index f9b245c..8c3c95a 100644
--- a/NEWS
+++ b/NEWS
@@ -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")