diff --git a/packages/docusaurus-utils/src/__tests__/index.test.ts b/packages/docusaurus-utils/src/__tests__/index.test.ts index 2e4f75fd32..b8ead90d5f 100644 --- a/packages/docusaurus-utils/src/__tests__/index.test.ts +++ b/packages/docusaurus-utils/src/__tests__/index.test.ts @@ -312,7 +312,7 @@ describe('load utils', () => { import Component from '@site/src/components/Component'; import Component from '@site/src/components/Component' - Lorem **ipsum** dolor sit \`amet\`, consectetur _adipiscing_ elit. [**Vestibulum**](https://wiktionary.org/wiki/vestibulum) ex urna, ~molestie~ et sagittis ut, varius ac justo :wink:. + Lorem **ipsum** dolor sit \`amet\`[^1], consectetur _adipiscing_ elit. [**Vestibulum**](https://wiktionary.org/wiki/vestibulum) ex urna[^bignote], ~molestie~ et sagittis ut, varius ac justo :wink:. Nunc porttitor libero nec vulputate venenatis. Nam nec rhoncus mauris. Morbi tempus est et nibh maximus, tempus venenatis arcu lobortis. `, @@ -343,6 +343,20 @@ describe('load utils', () => { `, output: 'Lorem ipsum dolor sit amet', }, + // Content beginning with blockquote + { + input: ` + > Lorem ipsum dolor sit amet + `, + output: 'Lorem ipsum dolor sit amet', + }, + // Content beginning with image (eg. blog post) + { + input: ` + ![Lorem ipsum](/img/lorem-ipsum.svg) + `, + output: 'Lorem ipsum', + }, ]; asserts.forEach((testCase) => { diff --git a/packages/docusaurus-utils/src/index.ts b/packages/docusaurus-utils/src/index.ts index 8e80e3fcfb..39879cbb07 100644 --- a/packages/docusaurus-utils/src/index.ts +++ b/packages/docusaurus-utils/src/index.ts @@ -204,16 +204,16 @@ export function createExcerpt(fileString: string): string | undefined { .replace(/^\#{1,6}\s*([^#]*)\s*(\#{1,6})?/gm, '$1') // Remove emphasis and strikethroughs. .replace(/([\*_~]{1,3})(\S.*?\S{0,1})\1/g, '$2') + // Remove images. + .replace(/\!\[(.*?)\][\[\(].*?[\]\)]/g, '$1') + // Remove footnotes. + .replace(/\[\^.+?\](\: .*?$)?/g, '') // Remove inline links. .replace(/\[(.*?)\][\[\(].*?[\]\)]/g, '$1') // Remove inline code. .replace(/`(.+?)`/g, '$1') - // Remove images. - .replace(/\!\[(.*?)\][\[\(].*?[\]\)]/g, '') // Remove blockquotes. .replace(/^\s{0,3}>\s?/g, '') - // Remove footnotes. - .replace(/\[\^.+?\](\: .*?$)?/g, '') // Remove admonition definition. .replace(/(:{3}.*)/, '') // Remove Emoji names within colons include preceding whitespace.