aboutsummaryrefslogtreecommitdiff
path: root/website/src/docs-path.ts
diff options
context:
space:
mode:
Diffstat (limited to 'website/src/docs-path.ts')
-rw-r--r--website/src/docs-path.ts20
1 files changed, 20 insertions, 0 deletions
diff --git a/website/src/docs-path.ts b/website/src/docs-path.ts
new file mode 100644
index 00000000..be022a4b
--- /dev/null
+++ b/website/src/docs-path.ts
@@ -0,0 +1,20 @@
+const docsLocales = new Set(['ja', 'zh-cn']);
+
+export function docsChannel(pathname: string) {
+ return /^\/(?:ja\/|zh-cn\/)?docs\/preview(?:\/|$)/.test(pathname) ? 'preview' : 'stable';
+}
+
+export function docsPath({ entry }: { entry: string }) {
+ const slug = entry.replace(/\.(md|mdx|markdown|mdown|mkdn|mkd|mdwn)$/i, '');
+ const normalized = slug.replace(/\/index$/, '');
+ const segments = normalized.split('/');
+ const localeIndex = segments[0] === 'preview' ? 1 : 0;
+ const locale = segments[localeIndex];
+
+ if (locale && docsLocales.has(locale)) {
+ segments.splice(localeIndex, 1);
+ return `${locale}/docs${segments.length > 0 ? `/${segments.join('/')}` : ''}`;
+ }
+
+ return normalized === 'index' ? 'docs' : `docs/${normalized}`;
+}