From 6349f1bd49c2f22f3a3d6949cf10e580d0d32ffb Mon Sep 17 00:00:00 2001
From: Chris LaFreniere <40371649+chlafreniere@users.noreply.github.com>
Date: Fri, 4 Dec 2020 14:42:24 -0800
Subject: [PATCH] Prevent Table from Disappearing due to exception when looking
for tHead (#13680)
* Prevent exception when tHead doesn't exist at node
* Add test for no thead
---
.../workbench/contrib/notebook/browser/turndownPluginGfm.ts | 4 ++--
.../notebook/test/browser/htmlMarkdownConverter.test.ts | 6 ++++++
2 files changed, 8 insertions(+), 2 deletions(-)
diff --git a/src/sql/workbench/contrib/notebook/browser/turndownPluginGfm.ts b/src/sql/workbench/contrib/notebook/browser/turndownPluginGfm.ts
index 1d4dceafae..18cb754188 100644
--- a/src/sql/workbench/contrib/notebook/browser/turndownPluginGfm.ts
+++ b/src/sql/workbench/contrib/notebook/browser/turndownPluginGfm.ts
@@ -99,12 +99,12 @@ rules['table'] = {
// Ensure there are no blank lines
content = content.replace('\n\n', '\n');
// if the headings are empty, add border line and headings to keep table format
- if (node.tHead.innerText === '') {
+ if (node.tHead?.innerText === '') {
let emptyHeader = '\n\n|';
let border = '\n|';
for (let i = 0; i < node.rows[0].childNodes.length; i++) {
emptyHeader += ' |';
- border += ' --- |'
+ border += ' --- |';
}
return emptyHeader + border + content + '\n\n';
}
diff --git a/src/sql/workbench/contrib/notebook/test/browser/htmlMarkdownConverter.test.ts b/src/sql/workbench/contrib/notebook/test/browser/htmlMarkdownConverter.test.ts
index bfe8453f46..04698f60ac 100644
--- a/src/sql/workbench/contrib/notebook/test/browser/htmlMarkdownConverter.test.ts
+++ b/src/sql/workbench/contrib/notebook/test/browser/htmlMarkdownConverter.test.ts
@@ -208,6 +208,12 @@ suite('HTML Markdown Converter', function (): void {
htmlString = '
\n\n\n| Test | \nTest | \nTest | \n
\n\n\n| test | \ntest | \ntest | \n
\n\n| test | \ntest | \ntest | \n
\n\n| test | \ntest | \ntest | \n
\n\n| test | \ntest | \ntest | \n
\n
\n';
assert.equal(htmlMarkdownConverter.convert(htmlString), `| Test | Test | Test |\n| --- | --- | --- |\n| test | test | test |\n| test | test | test |\n| test | test | test |\n| test | test | test |`, 'Table with header failed');
});
+
+ test('Should transform table with no thead', () => {
+ htmlString = '\n\n| Test | \nTest | \nTest | \n
\n\n| test | \ntest | \ntest | \n
\n\n| test | \ntest | \ntest | \n
\n\n| test | \ntest | \ntest | \n
\n\n| test | \ntest | \ntest | \n
\n
\n';
+ assert.equal(htmlMarkdownConverter.convert(htmlString), `| Test | Test | Test |\n| --- | --- | --- |\n| test | test | test |\n| test | test | test |\n| test | test | test |\n| test | test | test |`, 'Table with no thead failed');
+ });
+
test('Should transform and tags', () => {
htmlString = 'test string';
assert.equal(htmlMarkdownConverter.convert(htmlString), '**test string**', 'Basic bold test failed');