@mieweb/wikigdrive
Version:
Google Drive to MarkDown synchronization
33 lines (32 loc) • 1.12 kB
JavaScript
import { extractText, walkRecursiveAsync } from '../markdownNodesUtils.js';
import { isMarkdownMacro, stripMarkdownMacro } from '../macroUtils.js';
// Related tests:
// test ./our-docs
// test ./code-links.md
export async function removeMarkdownMacro(markdownChunks) {
let inHtml = false;
await walkRecursiveAsync(markdownChunks.body, async (chunk, ctx) => {
if (chunk.isTag && chunk.tag === 'HTML_MODE/') {
inHtml = true;
return;
}
if (inHtml) {
return;
}
if (chunk.isTag && chunk.tag === 'CODE') {
const innerTxt = extractText(chunk);
if (isMarkdownMacro(innerTxt)) {
chunk.parent.children.splice(ctx.nodeIdx, 1, {
isTag: false,
text: stripMarkdownMacro(innerTxt),
comment: 'removeMarkdownMacro.ts: replace code part with stripped macro'
});
}
}
}, {}, (chunk) => {
if (chunk.isTag && chunk.tag === 'HTML_MODE/') {
inHtml = false;
return;
}
});
}