fix(mdx-loader): mdx-code-block should support CRLF (#9897)

This commit is contained in:
Sébastien Lorber 2024-02-29 13:20:03 +01:00 committed by GitHub
parent 0589b1475d
commit 2152572a3b
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
2 changed files with 33 additions and 2 deletions

View file

@ -1166,6 +1166,37 @@ describe('unwrapMdxCodeBlocks', () => {
`); `);
}); });
it('can unwrap a simple mdx code block with CRLF', () => {
// Note: looks like string dedent mess up with \r
expect(
unwrapMdxCodeBlocks(`
# Title\r
\`\`\`mdx-code-block\r
import Comp, {User} from "@site/components/comp"\r
\r
<Comp prop="test">\r
<User user={{firstName: "Sébastien"}} />\r
</Comp>\r
\r
export const age = 36\r
\`\`\`\r
\r
text\r
`),
).toBe(`
# Title\r
import Comp, {User} from "@site/components/comp"\r
\r
<Comp prop="test">\r
<User user={{firstName: "Sébastien"}} />\r
</Comp>\r
\r
export const age = 36\r
\r
text\r
`);
});
it('can unwrap a nested mdx code block', () => { it('can unwrap a nested mdx code block', () => {
expect( expect(
unwrapMdxCodeBlocks(dedent` unwrapMdxCodeBlocks(dedent`

View file

@ -70,9 +70,9 @@ export function escapeMarkdownHeadingIds(content: string): string {
export function unwrapMdxCodeBlocks(content: string): string { export function unwrapMdxCodeBlocks(content: string): string {
// We only support 3/4 backticks on purpose, should be good enough // We only support 3/4 backticks on purpose, should be good enough
const regexp3 = const regexp3 =
/(?<begin>^|\n)```(?<spaces>\x20*)mdx-code-block\n(?<children>.*?)\n```(?<end>\n|$)/gs; /(?<begin>^|\r?\n)```(?<spaces>\x20*)mdx-code-block\r?\n(?<children>.*?)\r?\n```(?<end>\r?\n|$)/gs;
const regexp4 = const regexp4 =
/(?<begin>^|\n)````(?<spaces>\x20*)mdx-code-block\n(?<children>.*?)\n````(?<end>\n|$)/gs; /(?<begin>^|\r?\n)````(?<spaces>\x20*)mdx-code-block\r?\n(?<children>.*?)\r?\n````(?<end>\r?\n|$)/gs;
// eslint-disable-next-line @typescript-eslint/no-explicit-any // eslint-disable-next-line @typescript-eslint/no-explicit-any
const replacer = (substring: string, ...args: any[]) => { const replacer = (substring: string, ...args: any[]) => {