From cab4b69e946ce82fcd5e97db962e1a706da05ff5 Mon Sep 17 00:00:00 2001 From: Isaac Muse Date: Thu, 22 Feb 2018 06:46:35 -0700 Subject: Only strip spaces in tables (#644) Strip only the space character and not things like nbsp in tables. Fixes #635. --- markdown/extensions/tables.py | 10 +++---- tests/test_syntax/extensions/__init__.py | 0 tests/test_syntax/extensions/test_tables.py | 43 +++++++++++++++++++++++++++++ 3 files changed, 48 insertions(+), 5 deletions(-) create mode 100644 tests/test_syntax/extensions/__init__.py create mode 100644 tests/test_syntax/extensions/test_tables.py diff --git a/markdown/extensions/tables.py b/markdown/extensions/tables.py index a48660b..b8218b0 100644 --- a/markdown/extensions/tables.py +++ b/markdown/extensions/tables.py @@ -44,7 +44,7 @@ class TableProcessor(BlockProcessor): Keep border check and separator row do avoid repeating the work. """ is_table = False - rows = [row.strip() for row in block.split('\n')] + rows = [row.strip(' ') for row in block.split('\n')] if len(rows) > 1: header0 = rows[0] self.border = PIPE_NONE @@ -76,13 +76,13 @@ class TableProcessor(BlockProcessor): def run(self, parent, blocks): """ Parse a table block and build table. """ block = blocks.pop(0).split('\n') - header = block[0].strip() + header = block[0].strip(' ') rows = [] if len(block) < 3 else block[2:] # Get alignment of columns align = [] for c in self.separator: - c = c.strip() + c = c.strip(' ') if c.startswith(':') and c.endswith(':'): align.append('center') elif c.startswith(':'): @@ -102,7 +102,7 @@ class TableProcessor(BlockProcessor): self._build_empty_row(tbody, align) else: for row in rows: - self._build_row(row.strip(), tbody, align) + self._build_row(row.strip(' '), tbody, align) def _build_empty_row(self, parent, align): """Build an empty row.""" @@ -124,7 +124,7 @@ class TableProcessor(BlockProcessor): for i, a in enumerate(align): c = etree.SubElement(tr, tag) try: - c.text = cells[i].strip() + c.text = cells[i].strip(' ') except IndexError: # pragma: no cover c.text = "" if a: diff --git a/tests/test_syntax/extensions/__init__.py b/tests/test_syntax/extensions/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/tests/test_syntax/extensions/test_tables.py b/tests/test_syntax/extensions/test_tables.py new file mode 100644 index 0000000..1565324 --- /dev/null +++ b/tests/test_syntax/extensions/test_tables.py @@ -0,0 +1,43 @@ +# -*- coding: utf-8 -*- +from __future__ import unicode_literals +from markdown.test_tools import TestCase + + +class TestTableBlocks(TestCase): + + def test_empty_cells(self): + """Empty cells (nbsp).""" + + text = """ +  | Second Header +------------- | ------------- +  | Content Cell +Content Cell |   +""" + + self.assertMarkdownRenders( + text, + self.dedent( + """ + + + + + + + + + + + + + + + + + +
 Second Header
 Content Cell
Content Cell 
+ """ + ), + extensions=['tables'] + ) -- cgit v1.2.3