Skip to content

Commit

Permalink
Merge pull request markedjs#1262 from UziTech/table-cells
Browse files Browse the repository at this point in the history
Fix table cells
  • Loading branch information
styfle committed Jun 12, 2018
2 parents a31be4b + 877eecd commit e831e52
Show file tree
Hide file tree
Showing 3 changed files with 82 additions and 3 deletions.
20 changes: 18 additions & 2 deletions lib/marked.js
Original file line number Diff line number Diff line change
Expand Up @@ -1340,7 +1340,22 @@ function merge(obj) {
}

function splitCells(tableRow, count) {
var cells = tableRow.replace(/([^\\])\|/g, '$1 |').split(/ +\| */),
// ensure that every cell-delimiting pipe has a space
// before it to distinguish it from an escaped pipe
var row = tableRow.replace(/\|/g, function (match, offset, str) {
var escaped = false,
curr = offset;
while (--curr >= 0 && str[curr] === '\\') escaped = !escaped;
if (escaped) {
// odd number of slashes means | is escaped
// so we leave it alone
return '|';
} else {
// add space before unescaped |
return ' |';
}
}),
cells = row.split(/ \|/),
i = 0;

if (cells.length > count) {
Expand All @@ -1350,7 +1365,8 @@ function splitCells(tableRow, count) {
}

for (; i < cells.length; i++) {
cells[i] = cells[i].replace(/\\\|/g, '|');
// leading or trailing whitespace is ignored per the gfm spec
cells[i] = cells[i].trim().replace(/\\\|/g, '|');
}
return cells;
}
Expand Down
15 changes: 15 additions & 0 deletions test/specs/marked/marked-spec.js
Original file line number Diff line number Diff line change
Expand Up @@ -46,3 +46,18 @@ describe('Marked Code spans', function() {
messenger.test(spec, section, ignore);
});
});

describe('Marked Table cells', function() {
var section = 'Table cells';

// var shouldPassButFails = [];
var shouldPassButFails = [];

var willNotBeAttemptedByCoreTeam = [];

var ignore = shouldPassButFails.concat(willNotBeAttemptedByCoreTeam);

markedSpec.forEach(function(spec) {
messenger.test(spec, section, ignore);
});
});
50 changes: 49 additions & 1 deletion test/specs/marked/marked.json
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,55 @@
{
"section": "Code spans",
"markdown": "`someone@example.com`",
"html": "<p><code>someone@exmaple.com</code></p>\n",
"html": "<p><code>someone@example.com</code></p>",
"example": 1
},
{
"section": "Table cells",
"markdown": "|1|\n|-|\n|1|",
"html": "<table><thead><tr><th>1</th></tr></thead><tbody><tr><td>1</td></tr></tbody></table>",
"example": 2
},
{
"section": "Table cells",
"markdown": "|1|\n|-|\n|\\||",
"html": "<table><thead><tr><th>1</th></tr></thead><tbody><tr><td>|</td></tr></tbody></table>",
"example": 3
},
{
"section": "Table cells",
"markdown": "|1|\n|-|\n|1\\\\1|",
"html": "<table><thead><tr><th>1</th></tr></thead><tbody><tr><td>1\\1</td></tr></tbody></table>",
"example": 4
},
{
"section": "Table cells",
"markdown": "|1|\n|-|\n|\\\\\\\\||",
"html": "<table><thead><tr><th>1</th></tr></thead><tbody><tr><td>\\\\</td></tr></tbody></table>",
"example": 5
},
{
"section": "Table cells",
"markdown": "|1|\n|-|\n|\\\\\\\\\\||",
"html": "<table><thead><tr><th>1</th></tr></thead><tbody><tr><td>\\\\|</td></tr></tbody></table>",
"example": 6
},
{
"section": "Table cells",
"markdown": "|1|2|\n|-|-|\n||2|",
"html": "<table><thead><tr><th>1</th><th>2</th></tr></thead><tbody><tr><td></td><td>2</td></tr></tbody></table>",
"example": 7
},
{
"section": "Table cells",
"markdown": "|1|2|\n|-|-|\n|1\\|\\\\|2\\|\\\\|",
"html": "<table><thead><tr><th>1</th><th>2</th></tr></thead><tbody><tr><td>1|\\</td><td>2|\\</td></tr></tbody></table>",
"example": 8
},
{
"section": "Table cells",
"markdown": "|1|2|\n|-|-|\n| |2|",
"html": "<table><thead><tr><th>1</th><th>2</th></tr></thead><tbody><tr><td></td><td>2</td></tr></tbody></table>",
"example": 9
}
]

0 comments on commit e831e52

Please sign in to comment.