aboutsummaryrefslogtreecommitdiff
path: root/src/main/java
diff options
context:
space:
mode:
authorMichael Williamson <mike@zwobble.org>2016-06-17 21:39:58 +0100
committerMichael Williamson <mike@zwobble.org>2016-06-17 21:40:09 +0100
commit53e29ad8211584759938fe4f26fb4280451c2972 (patch)
tree92edba6837621777861b976813243e360685a426 /src/main/java
parent6095e0888b914f583595ed1d42f35b531bbfeff4 (diff)
Extract function to check table rows
Diffstat (limited to 'src/main/java')
-rw-r--r--src/main/java/org/zwobble/mammoth/internal/docx/BodyXmlReader.java31
1 files changed, 19 insertions, 12 deletions
diff --git a/src/main/java/org/zwobble/mammoth/internal/docx/BodyXmlReader.java b/src/main/java/org/zwobble/mammoth/internal/docx/BodyXmlReader.java
index 95467b0..b4929fa 100644
--- a/src/main/java/org/zwobble/mammoth/internal/docx/BodyXmlReader.java
+++ b/src/main/java/org/zwobble/mammoth/internal/docx/BodyXmlReader.java
@@ -240,20 +240,11 @@ public class BodyXmlReader {
}
private ReadResult calculateRowspans(List<DocumentElement> rows) {
- for (DocumentElement rowElement : rows) {
- Optional<TableRow> row = Casts.tryCast(TableRow.class, rowElement);
- if (!row.isPresent()) {
- return ReadResult.withWarning(rows, "unexpected non-row element in table, cell merging may be incorrect");
- } else {
- for (DocumentElement cell : row.get().getChildren()) {
- if (!(cell instanceof UnmergedTableCell)) {
- return ReadResult.withWarning(rows, "unexpected non-cell element in table row, cell merging may be incorrect");
- }
- }
- }
+ Optional<String> error = checkTableRows(rows);
+ if (error.isPresent()) {
+ return ReadResult.withWarning(rows, error.get());
}
-
Map<Map.Entry<Integer, Integer>, Integer> rowspans = new HashMap<>();
Set<Map.Entry<Integer, Integer>> merged = new HashSet<>();
@@ -298,6 +289,22 @@ public class BodyXmlReader {
return success(mergedRows);
}
+ private Optional<String> checkTableRows(List<DocumentElement> rows) {
+ for (DocumentElement rowElement : rows) {
+ Optional<TableRow> row = Casts.tryCast(TableRow.class, rowElement);
+ if (!row.isPresent()) {
+ return Optional.of("unexpected non-row element in table, cell merging may be incorrect");
+ } else {
+ for (DocumentElement cell : row.get().getChildren()) {
+ if (!(cell instanceof UnmergedTableCell)) {
+ return Optional.of("unexpected non-cell element in table row, cell merging may be incorrect");
+ }
+ }
+ }
+ }
+ return Optional.empty();
+ }
+
private ReadResult readTableCell(XmlElement element) {
XmlElementLike properties = element.findChildOrEmpty("w:tcPr");
Optional<String> gridSpan = properties