Skip to content

Commit

Permalink
fix(v2): ignore imports when h1 heading parsing (#4646)
Browse files Browse the repository at this point in the history
  • Loading branch information
lex111 authored Apr 20, 2021
1 parent 5088a1e commit 4835222
Show file tree
Hide file tree
Showing 2 changed files with 37 additions and 2 deletions.
35 changes: 35 additions & 0 deletions packages/docusaurus-utils/src/__tests__/markdownParser.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -183,6 +183,41 @@ describe('parseMarkdownContentTitle', () => {
});
});

test('Should parse markdown h1 title placed after import declarations', () => {
const markdown = dedent`
import Component from '@site/src/components/Component';
import Component from '@site/src/components/Component'
import './styles.css';
# Markdown Title
Lorem Ipsum
`;
expect(parseMarkdownContentTitle(markdown)).toEqual({
content: `import Component from '@site/src/components/Component';\nimport Component from '@site/src/components/Component'\nimport './styles.css';\n\n\n\nLorem Ipsum`,
contentTitle: 'Markdown Title',
});
});

test('Should parse markdown h1 alternate title placed after import declarations', () => {
const markdown = dedent`
import Component from '@site/src/components/Component';
import Component from '@site/src/components/Component'
import './styles.css';
Markdown Title
==============
Lorem Ipsum
`;
expect(parseMarkdownContentTitle(markdown)).toEqual({
content: `import Component from '@site/src/components/Component';\nimport Component from '@site/src/components/Component'\nimport './styles.css';\n\nLorem Ipsum`,
contentTitle: 'Markdown Title',
});
});

test('Should parse title-only', () => {
const markdown = '# Document With Only A Title ';
expect(parseMarkdownContentTitle(markdown)).toEqual({
Expand Down
4 changes: 2 additions & 2 deletions packages/docusaurus-utils/src/markdownParser.ts
Original file line number Diff line number Diff line change
Expand Up @@ -86,10 +86,10 @@ export function parseMarkdownContentTitle(

const content = contentUntrimmed.trim();

const regularTitleMatch = /^(?<pattern>#\s*(?<title>[^#\n]*)+[ \t]*#?\n*?)/g.exec(
const regularTitleMatch = /^(?:import\s.*(from.*)?;?|\n)*?(?<pattern>#\s*(?<title>[^#\n]*)+[ \t]*#?\n*?)/g.exec(
content,
);
const alternateTitleMatch = /^(?<pattern>\s*(?<title>[^\n]*)\s*\n[=]+)/g.exec(
const alternateTitleMatch = /^(?:import\s.*(from.*)?;?|\n)*?(?<pattern>\s*(?<title>[^\n]*)\s*\n[=]+)/g.exec(
content,
);

Expand Down

0 comments on commit 4835222

Please sign in to comment.