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 Avenue
laboris + let html = `
Discourse Avenue
laboris @@ -108,13 +108,20 @@ QUnit.test("converts table tags", assert => {
Heading 1Head 2
`; - 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 1Head 2
Loremipsum
`; + markdown = `|Heading 1|Head 2|\n| --- | --- |\n|[![Lorem\\|45x45](http://example.com/image.png)](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 1Head 2
Headi

ng 1
Head 2
Loremipsum
sit amet