diff --git a/app/assets/javascripts/discourse/lib/to-markdown.js.es6 b/app/assets/javascripts/discourse/lib/to-markdown.js.es6
index 918d4dac70..7a2bc370af 100644
--- a/app/assets/javascripts/discourse/lib/to-markdown.js.es6
+++ b/app/assets/javascripts/discourse/lib/to-markdown.js.es6
@@ -2,6 +2,7 @@ import parseHTML from 'discourse/helpers/parse-html';
const trimLeft = text => text.replace(/^\s+/,"");
const trimRight = text => text.replace(/\s+$/,"");
+const countPipes = text => text.match(/(? 1 &&
- pipes.length > 2 &&
- rows.reduce((a, c) => a && c.match(/\|/g).length <= pipes.length);
+ pipeCount > 2 &&
+ rows.reduce((a, c) => a && countPipes(c) <= pipeCount);
if (!isValid) {
throw "Unsupported table format for Markdown conversion";
}
- const splitterRow = pipes.slice(1).map(() => "| --- ").join("") + "|\n";
+ const splitterRow = [...Array(pipeCount-1)].map(() => "| --- ").join("") + "|\n";
text = text.replace("|\n", "|\n" + splitterRow);
return text;
diff --git a/test/javascripts/lib/to-markdown-test.js.es6 b/test/javascripts/lib/to-markdown-test.js.es6
index 698dcd7570..3c2f04566b 100644
--- a/test/javascripts/lib/to-markdown-test.js.es6
+++ b/test/javascripts/lib/to-markdown-test.js.es6
@@ -98,7 +98,7 @@ QUnit.test("stripes unwanted inline tags", assert => {
});
QUnit.test("converts table tags", assert => {
- const html = `
Discourse Avenuelaboris
+ let html = `Discourse Avenuelaboris
| Heading 1 | Head 2 |
@@ -108,13 +108,20 @@ QUnit.test("converts table tags", assert => {
`;
- const markdown = `Discourse Avenue\n\n**laboris**\n\n|Heading 1|Head 2|\n| --- | --- |\n|Lorem|ipsum|\n|**dolor**|*sit amet*|`;
+ let markdown = `Discourse Avenue\n\n**laboris**\n\n|Heading 1|Head 2|\n| --- | --- |\n|Lorem|ipsum|\n|**dolor**|*sit amet*|`;
+ assert.equal(toMarkdown(html), markdown);
+
+ html = `
+ | Heading 1 | Head 2 |
+  | ipsum |
+
`;
+ markdown = `|Heading 1|Head 2|\n| --- | --- |\n|[](http://example.com)|ipsum|`;
assert.equal(toMarkdown(html), markdown);
});
QUnit.test("returns empty string if table format not supported", assert => {
let html = `
- | Headi\n\nng 1 | Head 2 |
+ Headi
ng 1 | Head 2 |
| Lorem | ipsum |
 | sit amet |