feat(v2): various markdown string parsing improvements/fixes (#4590)

* extract createExcerpt code in separate file + add bad test

* almost working markdown parsing refactor

* complete parseMarkdownString refactor

* fix tests

* fix blog test issue

* fix docusaurus utils imports
This commit is contained in:
Sébastien Lorber 2021-04-09 17:09:33 +02:00 committed by GitHub
parent b743edf5fb
commit 4efe6824b3
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
15 changed files with 895 additions and 563 deletions

View file

@ -26,9 +26,10 @@ import {
getEditUrl,
getFolderContainingFile,
posixPath,
replaceMarkdownLinks,
} from '@docusaurus/utils';
import {LoadContext} from '@docusaurus/types';
import {replaceMarkdownLinks} from '@docusaurus/utils/lib/markdownLinks';
import {assertBlogPostFrontMatter} from './blogFrontMatter';
export function truncate(fileString: string, truncateMarker: RegExp): string {
return fileString.split(truncateMarker, 1).shift()!;
@ -140,12 +141,18 @@ export async function generateBlogPosts(
const source = path.join(blogDirPath, blogSourceFile);
const {
frontMatter,
content,
contentTitle,
excerpt,
} = await parseMarkdownFile(source);
assertBlogPostFrontMatter(frontMatter);
const aliasedSource = aliasedSitePath(source, siteDir);
const blogFileName = path.basename(blogSourceFile);
const {frontMatter, content, excerpt} = await parseMarkdownFile(source);
if (frontMatter.draft && process.env.NODE_ENV === 'production') {
return;
}
@ -182,9 +189,11 @@ export async function generateBlogPosts(
year: 'numeric',
}).format(date);
const title = frontMatter.title ?? contentTitle ?? linkName;
const description = frontMatter.description ?? excerpt ?? '';
const slug =
frontMatter.slug || (match ? toUrl({date, link: linkName}) : linkName);
frontMatter.title = frontMatter.title || linkName;
const permalink = normalizeUrl([baseUrl, routeBasePath, slug]);
@ -220,16 +229,16 @@ export async function generateBlogPosts(
}
blogPosts.push({
id: frontMatter.slug || frontMatter.title,
id: frontMatter.slug ?? title,
metadata: {
permalink,
editUrl: getBlogEditUrl(),
source: aliasedSource,
description: frontMatter.description || excerpt,
title,
description,
date,
formattedDate,
tags: frontMatter.tags,
title: frontMatter.title,
tags: frontMatter.tags ?? [],
readingTime: showReadingTime
? readingTime(content).minutes
: undefined,