@mieweb/wikigdrive
Version:
Google Drive to MarkDown synchronization
24 lines (20 loc) • 858 B
text/typescript
import {walkRecursiveSync} from '../markdownNodesUtils.ts';
import {MarkdownNodes} from '../MarkdownNodes.ts';
export function convertToc(markdownChunks: MarkdownNodes) {
walkRecursiveSync(markdownChunks.body, (chunk, ctx: { nodeIdx: number }) => {
if (!(chunk.isTag && chunk.tag === 'TOC')) {
return;
}
for (let idx = 0; idx < chunk.children.length; idx++) {
const child = chunk.children[idx];
if (child.isTag && child.tag === 'P') {
const liElement = markdownChunks.createNode('LI');
const children = chunk.children.splice(idx, 1, liElement);
liElement.children.splice(0, 0, ...children);
}
}
const ulElement = markdownChunks.createNode('UL');
const children = chunk.children.splice(0, chunk.children.length, ulElement);
ulElement.children.splice(0, 0, ...children);
});
}