@mieweb/wikigdrive
Version:
Google Drive to MarkDown synchronization
25 lines (24 loc) • 993 B
JavaScript
import { walkRecursiveSync } from '../markdownNodesUtils.js';
// Related tests:
// test ./example-document.md
export function convertMathMl(markdownChunks) {
walkRecursiveSync(markdownChunks.body, (chunk, ctx) => {
if (!(chunk.isTag && chunk.tag === 'MATHML')) {
return;
}
const prevChunk = chunk.parent.children[ctx.nodeIdx - 1];
const nextChunk = chunk.parent.children[ctx.nodeIdx + 1];
if (prevChunk?.isTag === false || nextChunk?.isTag === false) {
const text = chunk.children.filter(c => c.isTag === false).map(c => c['text']).join('\n');
chunk.parent.children.splice(ctx.nodeIdx, 1, {
isTag: false,
text: '$$' + text + '$$'
});
return;
}
chunk.tag = 'PRE';
chunk.payload.lang = 'math';
const brNode = markdownChunks.createNode('EMPTY_LINE/');
chunk.parent.children.splice(ctx.nodeIdx + 1, 0, brNode);
});
}