diff options
author | 2021-04-01 16:34:11 -0400 | |
---|---|---|
committer | 2021-04-01 16:34:11 -0400 | |
commit | 54ba9f5ee17a68f0e5a917011ce696de397220dc (patch) | |
tree | 84f71153562f42c42870058b3d717f52cd338fa3 /src/compiler/index.ts | |
parent | 397b7145cc5d6008165af74a020ff7af3a8cace7 (diff) | |
download | astro-54ba9f5ee17a68f0e5a917011ce696de397220dc.tar.gz astro-54ba9f5ee17a68f0e5a917011ce696de397220dc.tar.zst astro-54ba9f5ee17a68f0e5a917011ce696de397220dc.zip |
Fix complex MDX parsing (#50)
* Fix complex MDX parsing
This allows fully MDX support using the micromark MDX extension. One caveat is that if you do something like use the less than sign, you need to escape it because the parser expects these to be tags otherwise.
* Move micromark definition
Diffstat (limited to 'src/compiler/index.ts')
-rw-r--r-- | src/compiler/index.ts | 10 |
1 files changed, 6 insertions, 4 deletions
diff --git a/src/compiler/index.ts b/src/compiler/index.ts index 541bae21e..112b7881e 100644 --- a/src/compiler/index.ts +++ b/src/compiler/index.ts @@ -8,8 +8,9 @@ import matter from 'gray-matter'; import gfmHtml from 'micromark-extension-gfm/html.js'; import { parse } from '../parser/index.js'; -import { createMarkdownHeadersCollector } from '../micromark-collect-headers.js'; -import { encodeMarkdown } from '../micromark-encode.js'; +import { createMarkdownHeadersCollector } from './markdown/micromark-collect-headers.js'; +import { encodeMarkdown } from './markdown/micromark-encode.js'; +import { encodeAstroMdx } from './markdown/micromark-mdx-astro.js'; import { optimize } from './optimize/index.js'; import { codegen } from './codegen.js'; @@ -56,10 +57,11 @@ async function convertMdToJsx( ): Promise<TransformResult> { const { data: frontmatterData, content } = matter(contents); const { headers, headersExtension } = createMarkdownHeadersCollector(); + const { htmlAstro, mdAstro } = encodeAstroMdx(); const mdHtml = micromark(content, { allowDangerousHtml: true, - extensions: [gfmSyntax()], - htmlExtensions: [gfmHtml, encodeMarkdown, headersExtension], + extensions: [gfmSyntax(), ...htmlAstro], + htmlExtensions: [gfmHtml, encodeMarkdown, headersExtension, mdAstro], }); // TODO: Warn if reserved word is used in "frontmatterData" |