summaryrefslogtreecommitdiff
path: root/packages/markdown/remark/src
diff options
context:
space:
mode:
authorGravatar Nate Moore <natemoo-re@users.noreply.github.com> 2021-11-10 17:34:31 -0600
committerGravatar GitHub <noreply@github.com> 2021-11-10 17:34:31 -0600
commit7eaabbb0e107790c0812e56bc5bb24b665c951d5 (patch)
tree4ba83bd0a8654bfe30b5f9721a550d1811525b7b /packages/markdown/remark/src
parent4eaef602acb84b7511c80c751df890d24cbba2ca (diff)
downloadastro-7eaabbb0e107790c0812e56bc5bb24b665c951d5.tar.gz
astro-7eaabbb0e107790c0812e56bc5bb24b665c951d5.tar.zst
astro-7eaabbb0e107790c0812e56bc5bb24b665c951d5.zip
Markdown bug bash! (#1789)
Diffstat (limited to 'packages/markdown/remark/src')
-rw-r--r--packages/markdown/remark/src/index.ts2
-rw-r--r--packages/markdown/remark/src/rehype-escape.ts12
2 files changed, 14 insertions, 0 deletions
diff --git a/packages/markdown/remark/src/index.ts b/packages/markdown/remark/src/index.ts
index 5c707a4db..8ea5263b8 100644
--- a/packages/markdown/remark/src/index.ts
+++ b/packages/markdown/remark/src/index.ts
@@ -7,6 +7,7 @@ import rehypeExpressions from './rehype-expressions.js';
import rehypeIslands from './rehype-islands.js';
import { remarkJsx, loadRemarkJsx } from './remark-jsx.js';
import rehypeJsx from './rehype-jsx.js';
+import rehypeEscape from './rehype-escape.js';
import remarkPrism from './remark-prism.js';
import remarkUnwrap from './remark-unwrap.js';
import { loadPlugins } from './load-plugins.js';
@@ -76,6 +77,7 @@ export async function renderMarkdown(content: string, opts?: MarkdownRenderingOp
.use(isMDX ? [rehypeJsx] : [])
.use(isMDX ? [rehypeExpressions] : [])
.use(isMDX ? [] : [rehypeRaw])
+ .use(isMDX ? [rehypeEscape] : [])
.use(rehypeIslands);
let result: string;
diff --git a/packages/markdown/remark/src/rehype-escape.ts b/packages/markdown/remark/src/rehype-escape.ts
new file mode 100644
index 000000000..e0094b463
--- /dev/null
+++ b/packages/markdown/remark/src/rehype-escape.ts
@@ -0,0 +1,12 @@
+import { SKIP, visit } from 'unist-util-visit';
+
+export default function rehypeEscape(): any {
+ return function (node: any): any {
+ return visit(node, 'element', (el) => {
+ if (el.tagName === 'code' || el.tagName === 'pre') {
+ el.properties['data-astro-raw'] = true;
+ }
+ return el;
+ });
+ };
+}