test02/node_modules/@vuepress/theme-default/lib/client/utils/resolveEditLink.js
罗佳鸿 6aa1ebe342
Some checks are pending
部署文档 / deploy-gh-pages (push) Waiting to run
first commit
2024-08-13 10:11:19 +08:00

30 lines
1.2 KiB
JavaScript

import { isLinkHttp, removeEndingSlash, removeLeadingSlash, } from 'vuepress/shared';
import { resolveRepoType } from './resolveRepoType.js';
export const editLinkPatterns = {
GitHub: ':repo/edit/:branch/:path',
GitLab: ':repo/-/edit/:branch/:path',
Gitee: ':repo/edit/:branch/:path',
Bitbucket: ':repo/src/:branch/:path?mode=edit&spa=0&at=:branch&fileviewer=file-view-default',
};
const resolveEditLinkPatterns = ({ docsRepo, editLinkPattern, }) => {
if (editLinkPattern) {
return editLinkPattern;
}
const repoType = resolveRepoType(docsRepo);
if (repoType !== null) {
return editLinkPatterns[repoType];
}
return null;
};
export const resolveEditLink = ({ docsRepo, docsBranch, docsDir, filePathRelative, editLinkPattern, }) => {
if (!filePathRelative)
return null;
const pattern = resolveEditLinkPatterns({ docsRepo, editLinkPattern });
if (!pattern)
return null;
return pattern
.replace(/:repo/, isLinkHttp(docsRepo) ? docsRepo : `https://github.com/${docsRepo}`)
.replace(/:branch/, docsBranch)
.replace(/:path/, removeLeadingSlash(`${removeEndingSlash(docsDir)}/${filePathRelative}`));
};