mirror of
https://github.com/TriliumNext/Notes.git
synced 2025-08-10 18:39:22 +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 = {
|
||||
filter: ['th', 'td'],
|
||||
replacement: function (content, node) {
|
||||
if (nodeContainsTable(nodeParentTable(node))) return content;
|
||||
return cell(content, node)
|
||||
}
|
||||
}
|
||||
@ -12,6 +13,8 @@ rules.tableCell = {
|
||||
rules.tableRow = {
|
||||
filter: 'tr',
|
||||
replacement: function (content, node) {
|
||||
if (nodeContainsTable(nodeParentTable(node))) return content;
|
||||
|
||||
var borderCells = ''
|
||||
var alignMap = { left: ':--', right: '--:', center: ':-:' }
|
||||
|
||||
@ -39,6 +42,8 @@ rules.table = {
|
||||
},
|
||||
|
||||
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
|
||||
var firstRow = node.rows.length ? node.rows[0] : null
|
||||
var columnCount = firstRow ? firstRow.childNodes.length : 0
|
||||
@ -97,6 +102,26 @@ function cell (content, node) {
|
||||
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) {
|
||||
turndownService.keep(function (node) {
|
||||
return node.nodeName === 'TABLE'
|
||||
|
Loading…
x
Reference in New Issue
Block a user