diff --git a/docs/src/components/LeftSidebar/LeftSidebar.astro b/docs/src/components/LeftSidebar/LeftSidebar.astro index 813de0cf7..1960dbb04 100644 --- a/docs/src/components/LeftSidebar/LeftSidebar.astro +++ b/docs/src/components/LeftSidebar/LeftSidebar.astro @@ -1,8 +1,10 @@ --- import { SIDEBAR } from '../../config.ts'; -import { getLanguageFromURL } from '../../util.ts'; +import { getLanguageFromURL, removeLeadingSlash, removeTrailingSlash } from '../../util.ts'; const {currentPage} = Astro.props; -const currentPageMatch = currentPage.slice(1); + +// Get the slug w/o a leading or trailing slash +const currentPageMatch = removeLeadingSlash(removeTrailingSlash(currentPage)); const langCode = getLanguageFromURL(currentPage); // SIDEBAR is a flat array. Group it by sections to properly render. const sidebarSections = SIDEBAR[langCode].reduce((col, item) => { diff --git a/docs/src/util.ts b/docs/src/util.ts index 0ec91bce0..269373735 100644 --- a/docs/src/util.ts +++ b/docs/src/util.ts @@ -2,3 +2,13 @@ export function getLanguageFromURL(pathname: string) { const langCodeMatch = pathname.match(/\/([a-z]{2}-?[A-Z]{0,2})\//); return langCodeMatch ? langCodeMatch[1] : 'en'; } + +/** Remove \ and / from beginning of string */ +export function removeLeadingSlash(path: string) { + return path.replace(/^[/\\]+/, ''); +} + +/** Remove \ and / from end of string */ +export function removeTrailingSlash(path: string) { + return path.replace(/[/\\]+$/, ''); +}