summaryrefslogtreecommitdiff
path: root/src/main/java/org
diff options
context:
space:
mode:
authorMichael Williamson <mike@zwobble.org>2017-05-20 15:37:34 +0100
committerMichael Williamson <mike@zwobble.org>2017-05-20 15:37:34 +0100
commit370df4d36053736446e9334008d012ebda5f86bb (patch)
treecfad042b40bfb45ee885de2ea651aafb8552e633 /src/main/java/org
parent62cdf68ff42c1887aac3c639226f878335a39a79 (diff)
Read whether row is header
Diffstat (limited to 'src/main/java/org')
-rw-r--r--src/main/java/org/zwobble/mammoth/internal/documents/TableRow.java8
-rw-r--r--src/main/java/org/zwobble/mammoth/internal/docx/StatefulBodyXmlReader.java12
2 files changed, 17 insertions, 3 deletions
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<DocumentElement> children;
+ private final boolean isHeader;
- public TableRow(List<DocumentElement> children) {
+ public TableRow(List<DocumentElement> children, boolean isHeader) {
this.children = children;
+ this.isHeader = isHeader;
}
@Override
@@ -18,4 +20,8 @@ public class TableRow implements DocumentElement, HasChildren {
public <T> T accept(DocumentElementVisitor<T> 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<String> gridSpan = properties