aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorIsaac Muse <faceless.shop@gmail.com>2018-02-22 06:46:35 -0700
committerWaylan Limberg <waylan.limberg@icloud.com>2018-02-22 08:46:35 -0500
commitcab4b69e946ce82fcd5e97db962e1a706da05ff5 (patch)
tree3e6fc7234f568bcd3abed9cb10ddd11c0ca91f2c
parentb0e993a23ab96562d9e0e86fcba715c9d8b9ffcf (diff)
downloadmarkdown-cab4b69e946ce82fcd5e97db962e1a706da05ff5.tar.gz
markdown-cab4b69e946ce82fcd5e97db962e1a706da05ff5.tar.bz2
markdown-cab4b69e946ce82fcd5e97db962e1a706da05ff5.zip
Only strip spaces in tables (#644)
Strip only the space character and not things like nbsp in tables. Fixes #635.
-rw-r--r--markdown/extensions/tables.py10
-rw-r--r--tests/test_syntax/extensions/__init__.py0
-rw-r--r--tests/test_syntax/extensions/test_tables.py43
3 files changed, 48 insertions, 5 deletions
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
--- /dev/null
+++ b/tests/test_syntax/extensions/__init__.py
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(
+ """
+ <table>
+ <thead>
+ <tr>
+ <th> </th>
+ <th>Second Header</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td> </td>
+ <td>Content Cell</td>
+ </tr>
+ <tr>
+ <td>Content Cell</td>
+ <td> </td>
+ </tr>
+ </tbody>
+ </table>
+ """
+ ),
+ extensions=['tables']
+ )