diff options
Diffstat (limited to 'src/main/java/org')
| -rw-r--r-- | src/main/java/org/zwobble/mammoth/internal/docx/BodyXmlReader.java | 31 |
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 |
