diff options
Diffstat (limited to 'packages/markdown-support/src/codeblock.ts')
-rw-r--r-- | packages/markdown-support/src/codeblock.ts | 44 |
1 files changed, 0 insertions, 44 deletions
diff --git a/packages/markdown-support/src/codeblock.ts b/packages/markdown-support/src/codeblock.ts deleted file mode 100644 index 3f0c2894d..000000000 --- a/packages/markdown-support/src/codeblock.ts +++ /dev/null @@ -1,44 +0,0 @@ -import { visit } from 'unist-util-visit'; -import type { Element, Root as HastRoot, Properties } from 'hast'; -import type { Root as MdastRoot } from 'mdast'; - -/** */ -export function remarkCodeBlock() { - return function (tree: MdastRoot) { - visit(tree, 'code', (node) => { - const { data, meta } = node; - let lang = node.lang || 'html'; // default to html to match GFM behavior. - - let currentClassName = (data?.hProperties as Properties)?.class ?? ''; - node.data = node.data || {}; - node.data.hProperties = node.data.hProperties || {}; - node.data.hProperties = { ...(node.data.hProperties as Properties), class: `language-${lang} ${currentClassName}`.trim(), lang, meta }; - }); - }; -} - -/** */ -export function rehypeCodeBlock() { - return function (tree: HastRoot) { - const escapeCode = (code: Element): void => { - code.children = code.children.map((child) => { - if (child.type === 'text') { - return { ...child, value: child.value.replace(/\{/g, 'ASTRO_ESCAPED_LEFT_CURLY_BRACKET\0') }; - } - return child; - }); - }; - visit(tree, 'element', (node) => { - if (node.tagName === 'code') { - escapeCode(node); - return; - } - - if (node.tagName !== 'pre') return; - if (!node.children[0]) return; - const code = node.children[0]; - if (code.type !== 'element' || code.tagName !== 'code') return; - node.properties = { ...code.properties }; - }); - }; -} |