aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--lib/docx/document-xml-reader.js9
-rw-r--r--tests/docx/document-xml-reader.tests.js18
2 files changed, 27 insertions, 0 deletions
diff --git a/lib/docx/document-xml-reader.js b/lib/docx/document-xml-reader.js
index 2145e3c..b2736f8 100644
--- a/lib/docx/document-xml-reader.js
+++ b/lib/docx/document-xml-reader.js
@@ -153,6 +153,15 @@ function DocumentXmlReader(options) {
}
});
},
+ "w:table": function(element) {
+ return readXmlElements(element.children).map(documents.Table);
+ },
+ "w:tr": function(element) {
+ return readXmlElements(element.children).map(documents.TableRow);
+ },
+ "w:tc": function(element) {
+ return readXmlElements(element.children).map(documents.TableCell);
+ },
"w:footnoteReference": function(element) {
var footnoteId = element.attributes["w:id"];
return new Result(new documents.FootnoteReference({
diff --git a/tests/docx/document-xml-reader.tests.js b/tests/docx/document-xml-reader.tests.js
index 6659735..b3876da 100644
--- a/tests/docx/document-xml-reader.tests.js
+++ b/tests/docx/document-xml-reader.tests.js
@@ -155,6 +155,24 @@ describe("readXmlElement: ", function() {
assert.deepEqual(result.value, new documents.Tab());
});
+ test("w:table is read as document table element", function() {
+ var tableXml = new XmlElement("w:table", {}, [
+ new XmlElement("w:tr", {}, [
+ new XmlElement("w:tc", {}, [
+ new XmlElement("w:p", {}, [])
+ ])
+ ])
+ ]);
+ var result = readXmlElement(tableXml);
+ assert.deepEqual(result.value, new documents.Table([
+ new documents.TableRow([
+ new documents.TableCell([
+ new documents.Paragraph([])
+ ])
+ ])
+ ]));
+ });
+
test("emits warning on unrecognised element", function() {
var unrecognisedElement = new XmlElement("w:not-an-element");
var result = readXmlElement(unrecognisedElement);