feat(v2): editUrl function for advanced use-cases (#4121)

* EditUrl function

* normalize blog/docs regarding the editUrl feature + editUrl function

* editUrl fn => always inject posix style relative paths, make tests more reliable
(see also https://github.com/facebook/docusaurus/issues/4124)

* fix editUrl on windows
This commit is contained in:
Sébastien Lorber 2021-01-29 15:35:25 +01:00 committed by GitHub
parent 15c50e2ecb
commit be7b5dca78
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
15 changed files with 368 additions and 69 deletions

View file

@ -13,6 +13,7 @@ import {
getFolderContainingFile,
normalizeUrl,
parseMarkdownString,
posixPath,
} from '@docusaurus/utils';
import {LoadContext} from '@docusaurus/types';
@ -120,14 +121,29 @@ export function processDocMetadata({
const relativeFilePath = path.relative(docsDirPath, filePath);
const isLocalized = docsDirPath === versionMetadata.docsDirPathLocalized;
function getDocEditUrl() {
if (typeof options.editUrl === 'function') {
return options.editUrl({
version: versionMetadata.versionName,
versionDocsDirPath: posixPath(
path.relative(siteDir, versionMetadata.docsDirPath),
),
docPath: posixPath(relativeFilePath),
locale: context.i18n.currentLocale,
});
} else if (typeof options.editUrl === 'string') {
const isLocalized = docsDirPath === versionMetadata.docsDirPathLocalized;
const baseVersionEditUrl =
isLocalized && options.editLocalizedFiles
? versionMetadata.versionEditUrlLocalized
: versionMetadata.versionEditUrl;
return getEditUrl(relativeFilePath, baseVersionEditUrl);
} else {
return undefined;
}
}
const versionEditUrl =
isLocalized && options.editLocalizedDocs
? versionMetadata.versionEditUrlLocalized
: versionMetadata.versionEditUrl;
const docsEditUrl = getEditUrl(relativeFilePath, versionEditUrl);
const docsEditUrl = getDocEditUrl();
const {frontMatter = {}, excerpt} = parseMarkdownString(content);
const {sidebar_label, custom_edit_url} = frontMatter;