| | |
| | | return s.replace(/\s/g, '-') |
| | | } |
| | | |
| | | // on the client, 'index' isn't ever rendered so we should clean it up |
| | | export function clientSideSlug(fp: string): string { |
| | | if (fp.endsWith("index")) { |
| | | fp = fp.slice(0, -"index".length) |
| | | } |
| | | |
| | | return fp |
| | | } |
| | | |
| | | export function trimPathSuffix(fp: string): string { |
| | | fp = clientSideSlug(fp) |
| | | let [cleanPath, anchor] = fp.split("#", 2) |
| | | anchor = anchor === undefined ? "" : "#" + anchor |
| | | |
| | | if (cleanPath.endsWith("index")) { |
| | | cleanPath = cleanPath.slice(0, -"index".length) |
| | | } |
| | | |
| | | if (cleanPath === "") { |
| | | cleanPath = "./" |
| | | } |
| | | |
| | | return cleanPath + anchor |
| | | } |
| | | |
| | |
| | | export function resolveToRoot(slug: string): string { |
| | | let fp = trimPathSuffix(slug) |
| | | |
| | | if (fp === "./") { |
| | | if (fp === "") { |
| | | return "." |
| | | } |
| | | |
| | |
| | | } |
| | | |
| | | export function relative(src: string, dest: string): string { |
| | | return path.relative(src, dest) |
| | | return "./" + path.relative(src, dest) |
| | | |
| | | } |
| | | |
| | | export const QUARTZ = "quartz" |