mirror of
https://github.com/facebook/docusaurus.git
synced 2025-05-10 23:57:22 +02:00
fix(utils): recognize ~~~ as code fences in link replacement (#7801)
This commit is contained in:
parent
fe3dfa720a
commit
1dd65eee50
3 changed files with 31 additions and 9 deletions
|
@ -76,6 +76,18 @@ exports[`replaceMarkdownLinks ignores links in fenced blocks 1`] = `
|
|||
\`\`\`
|
||||
[foo](foo.md)
|
||||
\`\`\`\`
|
||||
|
||||
~~~js
|
||||
[foo](foo.md)
|
||||
~~~
|
||||
|
||||
~~~js
|
||||
[foo](foo.md)
|
||||
\`\`\`
|
||||
[foo](foo.md)
|
||||
\`\`\`
|
||||
[foo](foo.md)
|
||||
~~~
|
||||
",
|
||||
}
|
||||
`;
|
||||
|
|
|
@ -179,6 +179,18 @@ The following operations are defined for [URI]s:
|
|||
\`\`\`
|
||||
[foo](foo.md)
|
||||
\`\`\`\`
|
||||
|
||||
~~~js
|
||||
[foo](foo.md)
|
||||
~~~
|
||||
|
||||
~~~js
|
||||
[foo](foo.md)
|
||||
\`\`\`
|
||||
[foo](foo.md)
|
||||
\`\`\`
|
||||
[foo](foo.md)
|
||||
~~~
|
||||
`,
|
||||
}),
|
||||
).toMatchSnapshot();
|
||||
|
|
|
@ -82,21 +82,19 @@ export function replaceMarkdownLinks<T extends ContentPaths>({
|
|||
const brokenMarkdownLinks: BrokenMarkdownLink<T>[] = [];
|
||||
|
||||
// Replace internal markdown linking (except in fenced blocks).
|
||||
let fencedBlock = false;
|
||||
let lastCodeFence = '';
|
||||
let lastCodeFence: string | null = null;
|
||||
const lines = fileString.split('\n').map((line) => {
|
||||
if (line.trim().startsWith('```')) {
|
||||
const codeFence = line.trim().match(/^`+/)![0]!;
|
||||
if (!fencedBlock) {
|
||||
fencedBlock = true;
|
||||
const codeFence = line.trimStart().match(/^`{3,}|^~{3,}/)?.[0];
|
||||
if (codeFence) {
|
||||
if (!lastCodeFence) {
|
||||
lastCodeFence = codeFence;
|
||||
// If we are in a ````-fenced block, all ``` would be plain text instead
|
||||
// of fences
|
||||
} else if (codeFence.length >= lastCodeFence.length) {
|
||||
fencedBlock = false;
|
||||
} else if (codeFence.startsWith(lastCodeFence)) {
|
||||
lastCodeFence = null;
|
||||
}
|
||||
}
|
||||
if (fencedBlock) {
|
||||
if (lastCodeFence) {
|
||||
return line;
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue