From 370df4d36053736446e9334008d012ebda5f86bb Mon Sep 17 00:00:00 2001 From: Michael Williamson Date: Sat, 20 May 2017 15:37:34 +0100 Subject: Read whether row is header --- .../org/zwobble/mammoth/internal/documents/TableRow.java | 8 +++++++- .../zwobble/mammoth/internal/docx/StatefulBodyXmlReader.java | 12 ++++++++++-- 2 files changed, 17 insertions(+), 3 deletions(-) (limited to 'src/main') diff --git a/src/main/java/org/zwobble/mammoth/internal/documents/TableRow.java b/src/main/java/org/zwobble/mammoth/internal/documents/TableRow.java index 9450c88..f00ec58 100644 --- a/src/main/java/org/zwobble/mammoth/internal/documents/TableRow.java +++ b/src/main/java/org/zwobble/mammoth/internal/documents/TableRow.java @@ -4,9 +4,11 @@ import java.util.List; public class TableRow implements DocumentElement, HasChildren { private final List children; + private final boolean isHeader; - public TableRow(List children) { + public TableRow(List children, boolean isHeader) { this.children = children; + this.isHeader = isHeader; } @Override @@ -18,4 +20,8 @@ public class TableRow implements DocumentElement, HasChildren { public T accept(DocumentElementVisitor visitor) { return visitor.visit(this); } + + public boolean isHeader() { + return isHeader; + } } 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 f726a29..76ea8ea 100644 --- a/src/main/java/org/zwobble/mammoth/internal/docx/StatefulBodyXmlReader.java +++ b/src/main/java/org/zwobble/mammoth/internal/docx/StatefulBodyXmlReader.java @@ -95,7 +95,7 @@ class StatefulBodyXmlReader { case "w:tbl": return readTable(element); case "w:tr": - return readElements(element.getChildren()).map(TableRow::new); + return readTableRow(element); case "w:tc": return readTableCell(element); @@ -150,6 +150,7 @@ class StatefulBodyXmlReader { case "w:rPr": case "w:tblPr": case "w:tblGrid": + case "w:trPr": case "w:tcPr": return EMPTY_SUCCESS; @@ -378,7 +379,7 @@ class StatefulBodyXmlReader { } } - return new TableRow(mergedCells); + return new TableRow(mergedCells, row.isHeader()); })); } @@ -398,6 +399,13 @@ class StatefulBodyXmlReader { return Optional.empty(); } + private ReadResult readTableRow(XmlElement element) { + XmlElementLike properties = element.findChildOrEmpty("w:trPr"); + boolean isHeader = properties.hasChild("w:tblHeader"); + return readElements(element.getChildren()) + .map(children -> new TableRow(children, isHeader)); + } + private ReadResult readTableCell(XmlElement element) { XmlElementLike properties = element.findChildOrEmpty("w:tcPr"); Optional gridSpan = properties -- cgit v1.2.3