From 578470a24c513c13e122139bd94671342c702980 Mon Sep 17 00:00:00 2001 From: Alexey Pyltsyn Date: Wed, 22 Sep 2021 11:15:46 +0300 Subject: [PATCH] fix: ignore code block lines when create excerpt (#5495) --- .../src/__tests__/markdownParser.test.ts | 13 +++++++++++++ packages/docusaurus-utils/src/markdownParser.ts | 9 +++++++++ 2 files changed, 22 insertions(+) diff --git a/packages/docusaurus-utils/src/__tests__/markdownParser.test.ts b/packages/docusaurus-utils/src/__tests__/markdownParser.test.ts index 2f36481e4b..c79d50b4d4 100644 --- a/packages/docusaurus-utils/src/__tests__/markdownParser.test.ts +++ b/packages/docusaurus-utils/src/__tests__/markdownParser.test.ts @@ -129,6 +129,19 @@ describe('createExcerpt', () => { `), ).toEqual('Markdown title'); }); + + test('should create excerpt for content with various code blocks', () => { + expect( + createExcerpt(dedent` + \`\`\`jsx + import React from 'react'; + import Layout from '@theme/Layout'; + \`\`\` + + Lorem \`ipsum\` dolor sit amet, consectetur \`adipiscing elit\`. + `), + ).toEqual('Lorem ipsum dolor sit amet, consectetur adipiscing elit.'); + }); }); describe('parseMarkdownContentTitle', () => { diff --git a/packages/docusaurus-utils/src/markdownParser.ts b/packages/docusaurus-utils/src/markdownParser.ts index 1f9377dfdd..5adac2653d 100644 --- a/packages/docusaurus-utils/src/markdownParser.ts +++ b/packages/docusaurus-utils/src/markdownParser.ts @@ -18,6 +18,7 @@ export function createExcerpt(fileString: string): string | undefined { // Remove Markdown alternate title .replace(/^[^\n]*\n[=]+/g, '') .split('\n'); + let inCode = false; /* eslint-disable no-continue */ // eslint-disable-next-line no-restricted-syntax @@ -32,6 +33,14 @@ export function createExcerpt(fileString: string): string | undefined { continue; } + // Skip code block line. + if (fileLine.trim().startsWith('```')) { + inCode = !inCode; + continue; + } else if (inCode) { + continue; + } + const cleanedLine = fileLine // Remove HTML tags. .replace(/<[^>]*>/g, '')