diff options
Diffstat (limited to 'src')
7 files changed, 104 insertions, 0 deletions
diff --git a/src/main/java/org/zwobble/mammoth/Mammoth.java b/src/main/java/org/zwobble/mammoth/Mammoth.java index cae4e31..4e69a6b 100644 --- a/src/main/java/org/zwobble/mammoth/Mammoth.java +++ b/src/main/java/org/zwobble/mammoth/Mammoth.java @@ -65,6 +65,21 @@ public class Mammoth { public String visit(Tab tab) { throw new UnsupportedOperationException(); } + + @Override + public String visit(Table table) { + throw new UnsupportedOperationException(); + } + + @Override + public String visit(TableRow tableRow) { + throw new UnsupportedOperationException(); + } + + @Override + public String visit(TableCell tableCell) { + throw new UnsupportedOperationException(); + } }); } } diff --git a/src/main/java/org/zwobble/mammoth/documents/DocumentElementVisitor.java b/src/main/java/org/zwobble/mammoth/documents/DocumentElementVisitor.java index 5a93837..0781960 100644 --- a/src/main/java/org/zwobble/mammoth/documents/DocumentElementVisitor.java +++ b/src/main/java/org/zwobble/mammoth/documents/DocumentElementVisitor.java @@ -6,4 +6,8 @@ public interface DocumentElementVisitor<T> { T visit(Text text); T visit(Tab tab); + + T visit(Table table); + T visit(TableRow tableRow); + T visit(TableCell tableCell); } diff --git a/src/main/java/org/zwobble/mammoth/documents/Table.java b/src/main/java/org/zwobble/mammoth/documents/Table.java new file mode 100644 index 0000000..ceac458 --- /dev/null +++ b/src/main/java/org/zwobble/mammoth/documents/Table.java @@ -0,0 +1,21 @@ +package org.zwobble.mammoth.documents; + +import java.util.List; + +public class Table implements DocumentElement, HasChildren { + private final List<DocumentElement> children; + + public Table(List<DocumentElement> children) { + this.children = children; + } + + @Override + public List<DocumentElement> getChildren() { + return children; + } + + @Override + public <T> T accept(DocumentElementVisitor<T> visitor) { + return visitor.visit(this); + } +} diff --git a/src/main/java/org/zwobble/mammoth/documents/TableCell.java b/src/main/java/org/zwobble/mammoth/documents/TableCell.java new file mode 100644 index 0000000..a7a4f59 --- /dev/null +++ b/src/main/java/org/zwobble/mammoth/documents/TableCell.java @@ -0,0 +1,21 @@ +package org.zwobble.mammoth.documents; + +import java.util.List; + +public class TableCell implements DocumentElement, HasChildren { + private final List<DocumentElement> children; + + public TableCell(List<DocumentElement> children) { + this.children = children; + } + + @Override + public List<DocumentElement> getChildren() { + return children; + } + + @Override + public <T> T accept(DocumentElementVisitor<T> visitor) { + return visitor.visit(this); + } +} diff --git a/src/main/java/org/zwobble/mammoth/documents/TableRow.java b/src/main/java/org/zwobble/mammoth/documents/TableRow.java new file mode 100644 index 0000000..b5ab320 --- /dev/null +++ b/src/main/java/org/zwobble/mammoth/documents/TableRow.java @@ -0,0 +1,21 @@ +package org.zwobble.mammoth.documents; + +import java.util.List; + +public class TableRow implements DocumentElement, HasChildren { + private final List<DocumentElement> children; + + public TableRow(List<DocumentElement> children) { + this.children = children; + } + + @Override + public List<DocumentElement> getChildren() { + return children; + } + + @Override + public <T> T accept(DocumentElementVisitor<T> visitor) { + return visitor.visit(this); + } +} diff --git a/src/main/java/org/zwobble/mammoth/docx/BodyXmlReader.java b/src/main/java/org/zwobble/mammoth/docx/BodyXmlReader.java index 9bdf26d..78baf51 100644 --- a/src/main/java/org/zwobble/mammoth/docx/BodyXmlReader.java +++ b/src/main/java/org/zwobble/mammoth/docx/BodyXmlReader.java @@ -38,6 +38,13 @@ public class BodyXmlReader { case "w:tab": return success(Tab.TAB); + case "w:tbl": + return readElements(element.children()).map(Table::new); + case "w:tr": + return readElements(element.children()).map(TableRow::new); + case "w:tc": + return readElements(element.children()).map(TableCell::new); + case "w:pPr": return EMPTY_SUCCESS; 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 af92e84..9c898a9 100644 --- a/src/test/java/org/zwobble/mammoth/tests/docx/BodyXmlTests.java +++ b/src/test/java/org/zwobble/mammoth/tests/docx/BodyXmlTests.java @@ -262,6 +262,21 @@ public class BodyXmlTests { equalTo(Tab.TAB)); } + @Test + public void canReadTableElements() { + XmlElement element = element("w:tbl", list( + element("w:tr", list( + element("w:tc", list( + element("w:p"))))))); + + assertThat( + readSuccess(a(bodyReader), element), + deepEquals(new Table(list( + new TableRow(list( + new TableCell(list( + make(a(PARAGRAPH)))))))))); + } + private static DocumentElement readSuccess(Maker<BodyXmlReader> reader, XmlElement element) { Result<DocumentElement> result = read(reader, element); assertThat(result.getWarnings(), deepEquals(list())); |
