UNPKG

svem

Version:

Svelte in Markdown preprocessor

36 lines (35 loc) 838 B
import { visit } from "unist-util-visit"; const remarkSvelteParse = () => { return (tree) => { visit(tree, "code", (node) => { if (node.lang) return; const patterns = ["{#", "{@"]; const isSvelte = patterns.some((pattern) => node.value?.startsWith(pattern)); if (isSvelte) { node.type = "html"; } }); }; }; const remarkSvelteEscape = () => { return (tree) => { visit(tree, "html-code", (node) => { escapeCode(node); }); visit(tree, "code", (node) => { escapeCode(node); }); visit(tree, "inlineCode", (node) => { escapeCode(node); }); }; }; const escapeCode = (node) => { if (node.value?.startsWith("{@html")) return; node.type = "html"; node.value = `{@html \`${node.value}\`}`; }; export { remarkSvelteEscape, remarkSvelteParse };