UNPKG

@mieweb/wikigdrive

Version:

Google Drive to MarkDown synchronization

32 lines (28 loc) 886 B
import {MarkdownNodes} from '../MarkdownNodes.ts'; import {extractText, walkRecursiveSync} from '../markdownNodesUtils.ts'; export function fixIdLinks(markdownChunks: MarkdownNodes) { let inHtml = false; walkRecursiveSync(markdownChunks.body, (chunk) => { if (chunk.isTag && chunk.tag === 'HTML_MODE/') { inHtml = true; return; } if (inHtml) { return; } if (chunk.isTag && 'A' === chunk.tag) { if (chunk.payload?.href && chunk.payload?.href.startsWith('#')) { const innerTxt = extractText(chunk); const escapedText = innerTxt.toLowerCase().replace(/[^\w]+/g, ' ').trim().replaceAll(' ', '-'); if (escapedText) { chunk.payload.href = '#' + escapedText; } } } }, {}, (chunk) => { if (chunk.isTag && chunk.tag === 'HTML_MODE/') { inHtml = false; return; } }); }