From 4f5020499cd5212e214698e14d014c9289b7c72c Mon Sep 17 00:00:00 2001 From: Michael Williamson Date: Sun, 6 Jul 2014 17:32:51 +0100 Subject: Preserve empty cells in tables --- mammoth/conversion.py | 2 +- mammoth/html_generation.py | 5 ++++- 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 @@ -191,6 +191,22 @@ def docx_table_is_converted_to_table_in_html(): assert_equal(expected_html, result.value) +@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 = ( + "" + + "" + + "

Top right

") + 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")) -- cgit v1.2.3