mirror of
https://github.com/TriliumNext/Notes.git
synced 2025-08-14 04:52:28 +08:00
Don't render the border of tables that contain other tables
This commit is contained in:
parent
813b9a61b0
commit
616cc129e2
@ -5,6 +5,7 @@ var rules = {}
|
|||||||
rules.tableCell = {
|
rules.tableCell = {
|
||||||
filter: ['th', 'td'],
|
filter: ['th', 'td'],
|
||||||
replacement: function (content, node) {
|
replacement: function (content, node) {
|
||||||
|
if (nodeContainsTable(nodeParentTable(node))) return content;
|
||||||
return cell(content, node)
|
return cell(content, node)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -12,6 +13,8 @@ rules.tableCell = {
|
|||||||
rules.tableRow = {
|
rules.tableRow = {
|
||||||
filter: 'tr',
|
filter: 'tr',
|
||||||
replacement: function (content, node) {
|
replacement: function (content, node) {
|
||||||
|
if (nodeContainsTable(nodeParentTable(node))) return content;
|
||||||
|
|
||||||
var borderCells = ''
|
var borderCells = ''
|
||||||
var alignMap = { left: ':--', right: '--:', center: ':-:' }
|
var alignMap = { left: ':--', right: '--:', center: ':-:' }
|
||||||
|
|
||||||
@ -39,6 +42,8 @@ rules.table = {
|
|||||||
},
|
},
|
||||||
|
|
||||||
replacement: function (content, node) {
|
replacement: function (content, node) {
|
||||||
|
if (nodeContainsTable(node)) return content;
|
||||||
|
|
||||||
// If table has no heading, add an empty one so as to get a valid Markdown table
|
// If table has no heading, add an empty one so as to get a valid Markdown table
|
||||||
var firstRow = node.rows.length ? node.rows[0] : null
|
var firstRow = node.rows.length ? node.rows[0] : null
|
||||||
var columnCount = firstRow ? firstRow.childNodes.length : 0
|
var columnCount = firstRow ? firstRow.childNodes.length : 0
|
||||||
@ -97,6 +102,26 @@ function cell (content, node) {
|
|||||||
return prefix + content + ' |'
|
return prefix + content + ' |'
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function nodeContainsTable(node) {
|
||||||
|
if (!node.childNodes) return false;
|
||||||
|
|
||||||
|
for (let i = 0; i < node.childNodes.length; i++) {
|
||||||
|
const child = node.childNodes[i];
|
||||||
|
if (child.nodeName === 'TABLE') return true;
|
||||||
|
if (nodeContainsTable(child)) return true;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
function nodeParentTable(node) {
|
||||||
|
let parent = node.parentNode;
|
||||||
|
while (parent.nodeName !== 'TABLE') {
|
||||||
|
parent = parent.parentNode;
|
||||||
|
if (!parent) return null;
|
||||||
|
}
|
||||||
|
return parent;
|
||||||
|
}
|
||||||
|
|
||||||
export default function tables (turndownService) {
|
export default function tables (turndownService) {
|
||||||
turndownService.keep(function (node) {
|
turndownService.keep(function (node) {
|
||||||
return node.nodeName === 'TABLE'
|
return node.nodeName === 'TABLE'
|
||||||
|
Loading…
x
Reference in New Issue
Block a user