diff --git a/packages/docusaurus-utils/src/__tests__/markdownUtils.test.ts b/packages/docusaurus-utils/src/__tests__/markdownUtils.test.ts index 734baea200bd..016f89688faa 100644 --- a/packages/docusaurus-utils/src/__tests__/markdownUtils.test.ts +++ b/packages/docusaurus-utils/src/__tests__/markdownUtils.test.ts @@ -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 +\r + \r +\r +\r +export const age = 36\r +\`\`\`\r +\r +text\r +`), + ).toBe(` +# Title\r +import Comp, {User} from "@site/components/comp"\r +\r +\r + \r +\r +\r +export const age = 36\r +\r +text\r +`); + }); + it('can unwrap a nested mdx code block', () => { expect( unwrapMdxCodeBlocks(dedent` diff --git a/packages/docusaurus-utils/src/markdownUtils.ts b/packages/docusaurus-utils/src/markdownUtils.ts index ce0766de6ce2..2fd563c3bb10 100644 --- a/packages/docusaurus-utils/src/markdownUtils.ts +++ b/packages/docusaurus-utils/src/markdownUtils.ts @@ -70,9 +70,9 @@ export function escapeMarkdownHeadingIds(content: string): string { export function unwrapMdxCodeBlocks(content: string): string { // We only support 3/4 backticks on purpose, should be good enough const regexp3 = - /(?^|\n)```(?\x20*)mdx-code-block\n(?.*?)\n```(?\n|$)/gs; + /(?^|\r?\n)```(?\x20*)mdx-code-block\r?\n(?.*?)\r?\n```(?\r?\n|$)/gs; const regexp4 = - /(?^|\n)````(?\x20*)mdx-code-block\n(?.*?)\n````(?\n|$)/gs; + /(?^|\r?\n)````(?\x20*)mdx-code-block\r?\n(?.*?)\r?\n````(?\r?\n|$)/gs; // eslint-disable-next-line @typescript-eslint/no-explicit-any const replacer = (substring: string, ...args: any[]) => {