Skip to content

Commit

Permalink
Fix(tables): allow for one column table
Browse files Browse the repository at this point in the history
Closes #406
  • Loading branch information
tivie committed Aug 5, 2017
1 parent 8f05be7 commit fef110c
Show file tree
Hide file tree
Showing 7 changed files with 142 additions and 23 deletions.
26 changes: 16 additions & 10 deletions dist/showdown.js

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion dist/showdown.js.map

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion dist/showdown.min.js

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion dist/showdown.min.js.map

Large diffs are not rendered by default.

26 changes: 16 additions & 10 deletions src/subParsers/tables.js
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,9 @@ showdown.subParser('tables', function (text, options, globals) {
return text;
}

var tableRgx = /^ {0,3}\|?.+\|.+\n[ \t]{0,3}\|?[ \t]*:?[ \t]*(?:-|=){2,}[ \t]*:?[ \t]*\|[ \t]*:?[ \t]*(?:-|=){2,}[\s\S]+?(?:\n\n|¨0)/gm;
var tableRgx = /^ {0,3}\|?.+\|.+\n {0,3}\|?[ \t]*:?[ \t]*(?:[-=]){2,}[ \t]*:?[ \t]*\|[ \t]*:?[ \t]*(?:[-=]){2,}[\s\S]+?(?:\n\n|¨0)/gm,
//singeColTblRgx = /^ {0,3}\|.+\|\n {0,3}\|[ \t]*:?[ \t]*(?:[-=]){2,}[ \t]*:?[ \t]*\|[ \t]*\n(?: {0,3}\|.+\|\n)+(?:\n\n|¨0)/gm;
singeColTblRgx = /^ {0,3}\|.+\|\n {0,3}\|[ \t]*:?[ \t]*(?:[-=]){2,}[ \t]*:?[ \t]*\|\n( {0,3}\|.+\|\n)*(?:\n|¨0)/gm;

function parseStyles (sLine) {
if (/^:[ \t]*--*$/.test(sLine)) {
Expand Down Expand Up @@ -56,14 +58,7 @@ showdown.subParser('tables', function (text, options, globals) {
return tb;
}

text = globals.converter._dispatch('tables.before', text, options, globals);

// find escaped pipe characters
text = text.replace(/\\(\|)/g, showdown.helper.escapeCharactersCallback);

// parse tables
text = text.replace(tableRgx, function (rawTable) {

function parseTable (rawTable) {
var i, tableLines = rawTable.split('\n');

// strip wrong first and last column if wrapped tables are used
Expand Down Expand Up @@ -126,7 +121,18 @@ showdown.subParser('tables', function (text, options, globals) {
}

return buildTable(headers, cells);
});
}

text = globals.converter._dispatch('tables.before', text, options, globals);

// find escaped pipe characters
text = text.replace(/\\(\|)/g, showdown.helper.escapeCharactersCallback);

// parse multi column tables
text = text.replace(tableRgx, parseTable);

// parse one column tables
text = text.replace(singeColTblRgx, parseTable);

text = globals.converter._dispatch('tables.after', text, options, globals);

Expand Down
81 changes: 81 additions & 0 deletions test/features/tables/#406.does-not-render-one-column-tables.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,81 @@
<table>
<thead>
<tr>
<th>some header</th>
</tr>
</thead>
<tbody>
<tr>
<td>some content</td>
</tr>
</tbody>
</table>
<table>
<thead>
<tr>
<th>some header</th>
</tr>
</thead>
<tbody>
</tbody>
</table>
<table>
<thead>
<tr>
<th>some header</th>
</tr>
</thead>
<tbody>
<tr>
<td>some content</td>
</tr>
<tr>
<td>some content</td>
</tr>
<tr>
<td>some content</td>
</tr>
<tr>
<td>some content</td>
</tr>
<tr>
<td>some content</td>
</tr>
</tbody>
</table>
<table>
<thead>
<tr>
<th style="text-align:left;">some header</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align:left;">some content</td>
</tr>
</tbody>
</table>
<table>
<thead>
<tr>
<th style="text-align:right;">some header</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align:right;">some content</td>
</tr>
</tbody>
</table>
<table>
<thead>
<tr>
<th style="text-align:center;">some header</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align:center;">some content</td>
</tr>
</tbody>
</table>
26 changes: 26 additions & 0 deletions test/features/tables/#406.does-not-render-one-column-tables.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
|some header |
|------------|
|some content|

|some header |
|------------|

|some header |
|------------|
|some content|
|some content|
|some content|
|some content|
|some content|

|some header |
|:-----------|
|some content|

|some header |
|-----------:|
|some content|

|some header |
|:----------:|
|some content|

0 comments on commit fef110c

Please sign in to comment.