aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichael Williamson <mike@zwobble.org>2026-09-26 22:06:43 +0100
committerMichael Williamson <mike@zwobble.org>2026-09-26 22:06:43 +0100
commite78ca95a0547d089c3f873aa62c038376da8c772 (patch)
tree6361b9e67f8766abd0f5cfd529a132bbbfe21d25
parentb199423229f0dc0fd2b4ef3629686a964b6fe702 (diff)
Handle paragraphs and runs that have been moved and tracked as a revision
-rw-r--r--NEWS2
-rw-r--r--src/main/java/org/zwobble/mammoth/internal/docx/StatefulBodyXmlReader.java6
-rw-r--r--src/test/java/org/zwobble/mammoth/tests/docx/BodyXmlTests.java6
3 files changed, 14 insertions, 0 deletions
diff --git a/NEWS b/NEWS
index 0c9ac0c..cb60138 100644
--- a/NEWS
+++ b/NEWS
@@ -2,6 +2,8 @@
* Read the children of w:customXml elements.
+* Handle paragraphs and runs that have been moved and tracked as a revision.
+
# 1.12.2
* Avoid excessive backtracking when parsing an unterminated string with many
diff --git a/src/main/java/org/zwobble/mammoth/internal/docx/StatefulBodyXmlReader.java b/src/main/java/org/zwobble/mammoth/internal/docx/StatefulBodyXmlReader.java
index 0c37dc6..2906a09 100644
--- a/src/main/java/org/zwobble/mammoth/internal/docx/StatefulBodyXmlReader.java
+++ b/src/main/java/org/zwobble/mammoth/internal/docx/StatefulBodyXmlReader.java
@@ -157,6 +157,11 @@ class StatefulBodyXmlReader {
case "w:customXml":
case "w:ins":
+ case "w:moveFromRangeEnd":
+ case "w:moveFromRangeStart":
+ case "w:moveTo":
+ case "w:moveToRangeEnd":
+ case "w:moveToRangeStart":
case "w:object":
case "w:smartTag":
case "w:drawing":
@@ -181,6 +186,7 @@ class StatefulBodyXmlReader {
case "w:footnoteRef":
case "w:endnoteRef":
case "w:annotationRef":
+ case "w:moveFrom":
case "w:pPr":
case "w:rPr":
case "w:tblPr":
diff --git a/src/test/java/org/zwobble/mammoth/tests/docx/BodyXmlTests.java b/src/test/java/org/zwobble/mammoth/tests/docx/BodyXmlTests.java
index 111c808..be870d6 100644
--- a/src/test/java/org/zwobble/mammoth/tests/docx/BodyXmlTests.java
+++ b/src/test/java/org/zwobble/mammoth/tests/docx/BodyXmlTests.java
@@ -2124,6 +2124,11 @@ public class BodyXmlTests {
public void appropriateElementsHaveTheirChildrenReadNormally() {
assertChildrenAreReadNormally("w:customXml");
assertChildrenAreReadNormally("w:ins");
+ assertChildrenAreReadNormally("w:moveFromRangeEnd");
+ assertChildrenAreReadNormally("w:moveFromRangeStart");
+ assertChildrenAreReadNormally("w:moveTo");
+ assertChildrenAreReadNormally("w:moveToRangeEnd");
+ assertChildrenAreReadNormally("w:moveToRangeStart");
assertChildrenAreReadNormally("w:object");
assertChildrenAreReadNormally("w:smartTag");
assertChildrenAreReadNormally("w:drawing");
@@ -2158,6 +2163,7 @@ public class BodyXmlTests {
assertIsIgnored("w:footnoteRef");
assertIsIgnored("w:endnoteRef");
assertIsIgnored("w:annotationRef");
+ assertIsIgnored("w:moveFrom");
assertIsIgnored("w:pPr");
assertIsIgnored("w:rPr");
assertIsIgnored("w:tblPr");