diff --git a/packages/slidev/node/syntax/transform/code-wrapper.ts b/packages/slidev/node/syntax/transform/code-wrapper.ts index 0335df724e..8d82267520 100644 --- a/packages/slidev/node/syntax/transform/code-wrapper.ts +++ b/packages/slidev/node/syntax/transform/code-wrapper.ts @@ -2,7 +2,7 @@ import type { MarkdownTransformContext } from '@slidev/types' import { normalizeRangeStr } from './utils' // eslint-disable-next-line regexp/no-super-linear-backtracking -export const reCodeBlock = /^```([\w'-]+)?\s*(?:\[(.*?)\])?\s*(?:\{([\w*,|-]+)\}\s*?(\{[^}]*\})?([^\r\n]*))?\r?\n((?:(?!^```)[\s\S])*?)^```$/gm +export const reCodeBlock = /^```([\w'-]+)?[ \t]*(?:\[(.*?)\])?[ \t]*(?:\{([\w*,|-]+)\}[ \t]*(\{[^}]*\})?([^\r\n]*))?\r?\n((?:(?!^```)[\s\S])*?)^```$/gm /** * Transform code block with wrapper diff --git a/test/__snapshots__/transform.test.ts.snap b/test/__snapshots__/transform.test.ts.snap index 99112fb263..d2327a90b3 100644 --- a/test/__snapshots__/transform.test.ts.snap +++ b/test/__snapshots__/transform.test.ts.snap @@ -1,5 +1,33 @@ // Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html +exports[`code-wrapper with square brackets in code 1`] = ` +" + + + +\`\`\`csharp +[Flags] +enum MyEnum {} +\`\`\` + + +" +`; + +exports[`code-wrapper with title and square brackets in code 1`] = ` +" + + + +\`\`\`csharp [MyEnum.cs] +[Flags] +enum MyEnum {} +\`\`\` + + +" +`; + exports[`external snippet 1`] = ` " \`\`\`ts {2|3|4}{lines:true} diff --git a/test/transform.test.ts b/test/transform.test.ts index c97cc77121..8ebe49e344 100644 --- a/test/transform.test.ts +++ b/test/transform.test.ts @@ -177,3 +177,29 @@ it('external snippet', () => { expect(ctx.s.toString()).toMatchSnapshot() }) + +it('code-wrapper with square brackets in code', () => { + const ctx = createTransformContext(` +\`\`\`csharp +[Flags] +enum MyEnum {} +\`\`\` +`) + + transformCodeWrapper(ctx) + + expect(ctx.s.toString()).toMatchSnapshot() +}) + +it('code-wrapper with title and square brackets in code', () => { + const ctx = createTransformContext(` +\`\`\`csharp [MyEnum.cs] +[Flags] +enum MyEnum {} +\`\`\` +`) + + transformCodeWrapper(ctx) + + expect(ctx.s.toString()).toMatchSnapshot() +})