myst-cli
Version:
Command line tools for MyST
29 lines (28 loc) • 1.05 kB
JavaScript
import { fileWarn, RuleId } from 'myst-common';
import { selectAll } from 'unist-util-select';
import { TexParser } from 'tex-to-myst';
export async function rawDirectiveTransform(tree, vfile) {
const rawNodes = selectAll('raw', tree);
rawNodes.forEach((node) => {
if (!node.value)
return;
if (['latex', 'tex'].includes(node.lang)) {
const state = new TexParser(node.value, vfile);
node.children = state.ast.children;
}
else {
if (node.lang && node.lang !== 'text') {
fileWarn(vfile, `unknown format for raw content: ${node.lang}`, {
ruleId: RuleId.directiveArgumentCorrect,
note: 'Treating content as text',
});
}
node.children = [
{ type: 'paragraph', children: [{ type: 'text', value: node.value }] },
];
}
});
}
export const rawDirectivePlugin = () => async (tree, file) => {
await rawDirectiveTransform(tree, file);
};