From d7a91be9a32c3aa539c39d4e801f127ea2cba7fe Mon Sep 17 00:00:00 2001 From: Waylan Limberg Date: Wed, 29 Jun 2011 11:32:01 -0400 Subject: Fixed #30. Tables now allow three spaces of indent like PHP Markdown Extra. Thanks to skurfer for report and inital patch. --- markdown/extensions/tables.py | 13 ++++++----- tests/extensions/extra/tables.html | 45 +++++++++++++++++++++++++++++++++++++- tests/extensions/extra/tables.txt | 18 +++++++++++++++ 3 files changed, 69 insertions(+), 7 deletions(-) diff --git a/markdown/extensions/tables.py b/markdown/extensions/tables.py index 952fd21..f780bb3 100644 --- a/markdown/extensions/tables.py +++ b/markdown/extensions/tables.py @@ -25,20 +25,21 @@ class TableProcessor(markdown.blockprocessors.BlockProcessor): rows = block.split('\n') return (len(rows) > 2 and '|' in rows[0] and '|' in rows[1] and '-' in rows[1] and - rows[1][0] in ['|', ':', '-']) + rows[1].strip()[0] in ['|', ':', '-']) def run(self, parent, blocks): """ Parse a table block and build table. """ block = blocks.pop(0).split('\n') - header = block[:2] + header = block[0].strip() + seperator = block[1].strip() rows = block[2:] # Get format type (bordered by pipes or not) border = False - if header[0].startswith('|'): + if header.startswith('|'): border = True # Get alignment of columns align = [] - for c in self._split_row(header[1], border): + for c in self._split_row(seperator, border): if c.startswith(':') and c.endswith(':'): align.append('center') elif c.startswith(':'): @@ -50,10 +51,10 @@ class TableProcessor(markdown.blockprocessors.BlockProcessor): # Build table table = etree.SubElement(parent, 'table') thead = etree.SubElement(table, 'thead') - self._build_row(header[0], thead, align, border) + self._build_row(header, thead, align, border) tbody = etree.SubElement(table, 'tbody') for row in rows: - self._build_row(row, tbody, align, border) + self._build_row(row.strip(), tbody, align, border) def _build_row(self, row, parent, align, border): """ Given a row of text, build table cells. """ diff --git a/tests/extensions/extra/tables.html b/tests/extensions/extra/tables.html index 1d626da..64196ec 100644 --- a/tests/extensions/extra/tables.html +++ b/tests/extensions/extra/tables.html @@ -116,4 +116,47 @@ W - \ No newline at end of file + +

Three spaces in front of a table:

+ + + + + + + + + + + + + + + + + +
First HeaderSecond Header
Content CellContent Cell
Content CellContent Cell
+ + + + + + + + + + + + + + + + + +
First HeaderSecond Header
Content CellContent Cell
Content CellContent Cell
+

Four spaces is a code block:

+
First Header | Second Header
+------------ | -------------
+Content Cell | Content Cell
+Content Cell | Content Cell
+
\ No newline at end of file diff --git a/tests/extensions/extra/tables.txt b/tests/extensions/extra/tables.txt index 64917ab..cf97cb5 100644 --- a/tests/extensions/extra/tables.txt +++ b/tests/extensions/extra/tables.txt @@ -32,3 +32,21 @@ foo|bar|baz | Q | W | | W +Three spaces in front of a table: + + First Header | Second Header + ------------ | ------------- + Content Cell | Content Cell + Content Cell | Content Cell + + | First Header | Second Header | + | ------------ | ------------- | + | Content Cell | Content Cell | + | Content Cell | Content Cell | + +Four spaces is a code block: + + First Header | Second Header + ------------ | ------------- + Content Cell | Content Cell + Content Cell | Content Cell -- cgit v1.2.3