UNPKG

@mieweb/wikigdrive

Version:

Google Drive to MarkDown synchronization

42 lines (37 loc) 1.28 kB
import {MarkdownNodes} from '../MarkdownNodes.ts'; import {walkRecursiveSync} from '../markdownNodesUtils.ts'; export function removeTdParas(markdownChunks: MarkdownNodes) { // Run after addEmptyLinesAfterParas let inHtml = 0; walkRecursiveSync(markdownChunks.body, (chunk) => { if (chunk.isTag && chunk.tag === 'HTML_MODE/') { inHtml++; return; } if (inHtml && chunk.isTag && ['TD', 'LI'].includes(chunk.tag)) { for (let pos = 0; pos < chunk.children.length; pos++) { const child = chunk.children[pos]; if (child.isTag && child.tag === 'P') { const br = markdownChunks.createNode('BR/'); br.comment = 'removeTdParas.ts: Break after removed td paragraph'; chunk.children.splice(pos, 1, ...child.children, br); pos--; continue; } } while (chunk.children.length > 0) { const lastChild = chunk.children[chunk.children.length - 1]; if (lastChild.isTag && ['EOL/', 'BR/'].includes(lastChild.tag)) { chunk.children.splice(chunk.children.length - 1, 1); continue; } break; } } }, {}, (chunk) => { if (chunk.isTag && chunk.tag === 'HTML_MODE/') { inHtml--; return; } }); }