fix: add v2 retrocompatible support for quoted admonitions (#9570)

This commit is contained in:
Sébastien Lorber 2023-11-21 20:49:34 +01:00 committed by sebastienlorber
parent 1875ca41c3
commit 0b34acf30f
3 changed files with 69 additions and 2 deletions

View file

@ -1366,6 +1366,57 @@ before
\t\t:::
after
`);
});
it('transforms directives in quotes', () => {
expect(
admonitionTitleToDirectiveLabel(
`
before
> :::caution There be dragons
>
> This is the admonition content
>
> :::
>
>> :::caution There be dragons
>>
>> This is the admonition content
>>
>> :::
> > :::caution There be dragons
> >
> > This is the admonition content
> >
> > :::
after
`,
directives,
),
).toBe(`
before
> :::caution[There be dragons]
>
> This is the admonition content
>
> :::
>
>> :::caution[There be dragons]
>>
>> This is the admonition content
>>
>> :::
> > :::caution[There be dragons]
> >
> > This is the admonition content
> >
> > :::
after
`);
});

View file

@ -97,14 +97,16 @@ export function admonitionTitleToDirectiveLabel(
const directiveNameGroup = `(${admonitionContainerDirectives.join('|')})`;
const regexp = new RegExp(
`^(?<indentation>( +|\t+))?(?<directive>:{3,}${directiveNameGroup}) +(?<title>.*)$`,
`^(?<quote>(> ?)*)(?<indentation>( +|\t+))?(?<directive>:{3,}${directiveNameGroup}) +(?<title>.*)$`,
'gm',
);
return content.replaceAll(regexp, (substring, ...args: any[]) => {
const groups = args.at(-1);
return `${groups.indentation ?? ''}${groups.directive}[${groups.title}]`;
return `${groups.quote ?? ''}${groups.indentation ?? ''}${
groups.directive
}[${groups.title}]`;
});
}

View file

@ -74,6 +74,20 @@ See admonition title v2 compat syntax bug: https://github.com/facebook/docusauru
:::
## Quoted admonitions
> :::caution There be dragons
>
> This is the admonition content
>
> :::
>
> > :::caution There be dragons
> >
> > This is the admonition content
> >
> > :::
## Official admonitions
Admonitions that are [officially documented](/docs/markdown-features/admonitions)