| | |
| | | |
| | | // on the client, 'index' isn't ever rendered so we should clean it up |
| | | export function clientSideSlug(fp: string): string { |
| | | // remove index |
| | | if (fp.endsWith("index")) { |
| | | fp = fp.slice(0, -"index".length) |
| | | } |
| | | |
| | | // remove trailing slash |
| | | if (fp.endsWith("/")) { |
| | | fp = fp.slice(0, -1) |
| | | } |
| | | |
| | | return fp |
| | | } |
| | | |
| | |
| | | } |
| | | |
| | | export function slugify(s: string): string { |
| | | const [fp, anchor] = s.split("#", 2) |
| | | let [fp, anchor] = s.split("#", 2) |
| | | const sluggedAnchor = anchor === undefined ? "" : "#" + slugAnchor(anchor) |
| | | const withoutFileExt = fp.replace(new RegExp(path.extname(fp) + '$'), '') |
| | | const rawSlugSegments = withoutFileExt.split(path.sep) |