summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--mammoth/docx/document_xml.py18
-rw-r--r--tests/docx/document_xml_tests.py23
2 files changed, 40 insertions, 1 deletions
diff --git a/mammoth/docx/document_xml.py b/mammoth/docx/document_xml.py
index 247bcbc..125b35e 100644
--- a/mammoth/docx/document_xml.py
+++ b/mammoth/docx/document_xml.py
@@ -119,6 +119,24 @@ def _create_reader(numbering, content_types, relationships, styles, docx_file):
return results.success(documents.tab())
+ @handler("w:tbl")
+ def table(element):
+ return _read_xml_elements(element.children) \
+ .map(documents.table)
+
+
+ @handler("w:tr")
+ def table(element):
+ return _read_xml_elements(element.children) \
+ .map(documents.table_row)
+
+
+ @handler("w:tc")
+ def table(element):
+ return _read_xml_elements(element.children) \
+ .map(documents.table_cell)
+
+
@handler("w:ins")
@handler("w:smartTag")
@handler("w:drawing")
diff --git a/tests/docx/document_xml_tests.py b/tests/docx/document_xml_tests.py
index 5c73cc3..133726c 100644
--- a/tests/docx/document_xml_tests.py
+++ b/tests/docx/document_xml_tests.py
@@ -143,7 +143,28 @@ class ReadXmlElementTests(object):
element = xml_element("w:tab")
tab = _read_and_get_document_xml_element(element)
assert_equal(documents.tab(), tab)
-
+
+
+ @istest
+ def word_table_is_read_as_document_table_element(self):
+ element = xml_element("w:tbl", {}, [
+ xml_element("w:tr", {}, [
+ xml_element("w:tc", {}, [
+ xml_element("w:p", {}, [])
+ ]),
+ ]),
+ ])
+ table = _read_and_get_document_xml_element(element)
+ expected_result = documents.table([
+ documents.table_row([
+ documents.table_cell([
+ documents.paragraph([])
+ ])
+ ])
+ ])
+ assert_equal(expected_result, table)
+
+
@istest
def children_of_w_ins_are_converted_normally(self):
element = xml_element("w:p", {}, [