diff --git a/markdownify/__init__.py b/markdownify/__init__.py index 6230fb8..284eba3 100644 --- a/markdownify/__init__.py +++ b/markdownify/__init__.py @@ -279,14 +279,20 @@ class MarkdownConverter(object): def convert_table(self, el, text, convert_as_inline): rows = el.find_all('tr') text_data = [] + rendered_header = False for row in rows: headers = row.find_all('th') columns = row.find_all('td') - if len(headers) > 0: + if not rendered_header and len(headers) > 0: headers = [head.text.strip() for head in headers] text_data.append('| ' + ' | '.join(headers) + ' |') text_data.append('| ' + ' | '.join(['---'] * len(headers)) + ' |') + rendered_header = True elif len(columns) > 0: + if not rendered_header: + text_data.append('| ' + ' | '.join([''] * len(columns)) + ' |') + text_data.append('| ' + ' | '.join(['---'] * len(columns)) + ' |') + rendered_header = True columns = [colm.text.strip() for colm in columns] text_data.append('| ' + ' | '.join(columns) + ' |') else: diff --git a/tests/test_conversions.py b/tests/test_conversions.py index 6663204..e6f70c0 100644 --- a/tests/test_conversions.py +++ b/tests/test_conversions.py @@ -41,8 +41,7 @@ nested_ols = """ """ -table = re.sub(r'\s+', '', """ - +table = """
@@ -58,18 +57,16 @@ table = re.sub(r'\s+', '', """ -
Firstname LastnameJackson 94
-""") +""" -table_head_body = re.sub(r'\s+', '', """ - +table_head_body = """
- + - + @@ -83,17 +80,15 @@ table_head_body = re.sub(r'\s+', '', """ -
Firstname Lastname Age
94
-""") +""" -table_missing_text = re.sub(r'\s+', '', """ - +table_missing_text = """
- + - + @@ -107,8 +102,25 @@ table_missing_text = re.sub(r'\s+', '', """ -
Lastname Age
94
-""") +""" + +table_missing_head = """ + + + + + + + + + + + + + + + +
FirstnameLastnameAge
JillSmith50
EveJackson94
""" def test_chomp(): @@ -325,6 +337,7 @@ def test_table(): assert md(table) == '| Firstname | Lastname | Age |\n| --- | --- | --- |\n| Jill | Smith | 50 |\n| Eve | Jackson | 94 |' assert md(table_head_body) == '| Firstname | Lastname | Age |\n| --- | --- | --- |\n| Jill | Smith | 50 |\n| Eve | Jackson | 94 |' assert md(table_missing_text) == '| | Lastname | Age |\n| --- | --- | --- |\n| Jill | | 50 |\n| Eve | Jackson | 94 |' + assert md(table_missing_head) == '| | | |\n| --- | --- | --- |\n| Firstname | Lastname | Age |\n| Jill | Smith | 50 |\n| Eve | Jackson | 94 |' def test_strong_em_symbol():