diff options
| author | Michael Williamson <mike@zwobble.org> | 2014-07-05 19:51:04 +0100 |
|---|---|---|
| committer | Michael Williamson <mike@zwobble.org> | 2014-07-05 19:51:04 +0100 |
| commit | db6bae062b7bc2e9bcda02a62dea2f438bd00d73 (patch) | |
| tree | 10abc2debf46c191fc022ec7349ecd63ec8bd945 | |
| parent | 12c1f40eee1d72b2ac1756a584440f7ae9241892 (diff) | |
Read tables from docx files
| -rw-r--r-- | lib/docx/document-xml-reader.js | 9 | ||||
| -rw-r--r-- | tests/docx/document-xml-reader.tests.js | 18 |
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); |
