diff options
| author | Michael Williamson <mike@zwobble.org> | 2014-07-06 17:32:51 +0100 |
|---|---|---|
| committer | Michael Williamson <mike@zwobble.org> | 2014-07-06 17:32:51 +0100 |
| commit | 4f5020499cd5212e214698e14d014c9289b7c72c (patch) | |
| tree | fe00a4831b6cea63de1bfa0749724b9c4789eeb5 | |
| parent | 6c0c5a0aea77387ea4873bee27e8df88f867002b (diff) | |
Preserve empty cells in tables
| -rw-r--r-- | mammoth/conversion.py | 2 | ||||
| -rw-r--r-- | mammoth/html_generation.py | 5 | ||||
| -rw-r--r-- | tests/conversion_tests.py | 16 |
3 files changed, 21 insertions, 2 deletions
diff --git a/mammoth/conversion.py b/mammoth/conversion.py index fa1333b..0349774 100644 --- a/mammoth/conversion.py +++ b/mammoth/conversion.py @@ -89,7 +89,7 @@ class DocumentConverter(object): def _convert_table_cell(self, table_cell, html_generator): - html_generator.start("td") + html_generator.start("td", always_write=True) for child in table_cell.children: child_generator = HtmlGenerator() self.convert_element_to_html(child, child_generator) diff --git a/mammoth/html_generation.py b/mammoth/html_generation.py index 8395a3d..32a0d62 100644 --- a/mammoth/html_generation.py +++ b/mammoth/html_generation.py @@ -12,8 +12,11 @@ class HtmlGenerator(object): self._write_all() self._fragments.append(_escape_html(text)) - def start(self, name, attributes=None): + def start(self, name, attributes=None, always_write=False): self._stack.append(_Element(name, attributes)) + + if always_write: + self._write_all() def end(self): element = self._stack.pop() diff --git a/tests/conversion_tests.py b/tests/conversion_tests.py index 3c5ff88..9cb8757 100644 --- a/tests/conversion_tests.py +++ b/tests/conversion_tests.py @@ -192,6 +192,22 @@ def docx_table_is_converted_to_table_in_html(): @istest +def empty_cells_are_preserved_in_table(): + table = documents.table([ + documents.table_row([ + documents.table_cell([_paragraph_with_text("")]), + documents.table_cell([_paragraph_with_text("Top right")]), + ]), + ]) + result = convert_document_element_to_html(table) + expected_html = ( + "<table>" + + "<tr><td></td><td><p>Top right</p></td></tr>" + + "</table>") + assert_equal(expected_html, result.value) + + +@istest def images_are_converted_to_img_tags_with_data_uri(): image = documents.image(alt_text=None, content_type="image/png", open=lambda: io.BytesIO(b"abc")) result = convert_document_element_to_html(image) |
