aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichael Williamson <mike@zwobble.org>2016-05-02 11:51:20 +0100
committerMichael Williamson <mike@zwobble.org>2016-05-02 11:51:20 +0100
commitc294898f2d1a35205debd453ccc30f903fc935b3 (patch)
tree4c3195cbe65f03d7c3a257473bf6d2676bb8ac99
parenta0155bb9c522b9b008ad3933ffcb9609b0f698e7 (diff)
Add support for table cells spanning multiple columns
-rw-r--r--mammoth/conversion.py6
-rw-r--r--tests/conversion_tests.py16
2 files changed, 21 insertions, 1 deletions
diff --git a/mammoth/conversion.py b/mammoth/conversion.py
index a2d1d0d..ce4ee21 100644
--- a/mammoth/conversion.py
+++ b/mammoth/conversion.py
@@ -153,9 +153,13 @@ class _DocumentConverter(documents.ElementVisitor):
def visit_table_cell(self, table_cell):
+ if table_cell.colspan == 1:
+ attributes = {}
+ else:
+ attributes = {"colspan": str(table_cell.colspan)}
nodes = [html.force_write] + self._visit_all(table_cell.children)
return [
- html.element("td", {}, nodes)
+ html.element("td", attributes, nodes)
]
diff --git a/tests/conversion_tests.py b/tests/conversion_tests.py
index 0ffee8e..c989417 100644
--- a/tests/conversion_tests.py
+++ b/tests/conversion_tests.py
@@ -332,6 +332,22 @@ def empty_cells_are_preserved_in_table():
@istest
+def table_cells_are_written_with_colspan_if_not_equal_to_one():
+ table = documents.table([
+ documents.table_row([
+ documents.table_cell([_paragraph_with_text("Top left")], colspan=2),
+ documents.table_cell([_paragraph_with_text("Top right")]),
+ ]),
+ ])
+ result = convert_document_element_to_html(table)
+ expected_html = (
+ "<table>" +
+ "<tr><td colspan=\"2\"><p>Top left</p></td><td><p>Top right</p></td></tr>" +
+ "</table>")
+ assert_equal(expected_html, result.value)
+
+
+@istest
def line_break_is_converted_to_br():
line_break = documents.line_break()
result = convert_document_element_to_html(line_break)