29 lines
865 B
TypeScript
29 lines
865 B
TypeScript
type DocsLocale = string | undefined;
|
|
|
|
const trimTrailingSlash = (value: string) => value.replace(/\/+$/, '');
|
|
const withTrailingSlash = (value: string) => `${trimTrailingSlash(value)}/`;
|
|
|
|
export function normalizeDocsSiteUrl(value: unknown): string | null {
|
|
if (typeof value !== 'string') return null;
|
|
|
|
const trimmed = value.trim();
|
|
if (!trimmed) return null;
|
|
|
|
return withTrailingSlash(trimmed);
|
|
}
|
|
|
|
export function buildDocsHref(args: {
|
|
locale?: DocsLocale;
|
|
docsSiteUrl?: unknown;
|
|
embeddedBaseURL: string;
|
|
}): string {
|
|
const localizedPath = args.locale === 'ru' ? 'ru/' : '';
|
|
const externalDocsUrl = normalizeDocsSiteUrl(args.docsSiteUrl);
|
|
|
|
if (externalDocsUrl) {
|
|
return `${externalDocsUrl}${localizedPath}`;
|
|
}
|
|
|
|
const base = args.embeddedBaseURL.replace(/\/?$/, '/');
|
|
return `${base}${args.locale === 'ru' ? 'docs/ru/' : 'docs/'}`;
|
|
}
|