chore: joinSegments fix + tests

This commit is contained in:
Jacky Zhao
2025-01-01 12:11:16 -08:00
parent 9466c145b1
commit e3162f7a7e
2 changed files with 37 additions and 7 deletions

View File

@ -183,15 +183,26 @@ export function slugTag(tag: string) {
}
export function joinSegments(...args: string[]): string {
return args
if (args.length === 0) {
return ""
}
let joined = args
.filter((segment) => segment !== "")
.map((segment, index) =>
index === 0
? // Deduplicate but not remove leading slashes for first segment
segment.replace(/\/+$/g, "").replace(/^\/\/+/g, "/")
: segment.replace(/^\/+|\/+$/g, ""),
)
.map((segment) => stripSlashes(segment))
.join("/")
// if the first segment starts with a slash, add it back
if (args[0].startsWith("/")) {
joined = "/" + joined
}
// if the last segment is a folder, add a trailing slash
if (args[args.length - 1].endsWith("/")) {
joined = joined + "/"
}
return joined
}
export function getAllSegmentPrefixes(tags: string): string[] {