22 lines
430 B
Go
22 lines
430 B
Go
package forge
|
|
|
|
import (
|
|
"net/url"
|
|
"strings"
|
|
)
|
|
|
|
// escapePathSegments joins path segments while escaping each segment.
|
|
func escapePathSegments(base string, segments ...string) string {
|
|
if len(segments) == 0 {
|
|
return base
|
|
}
|
|
|
|
var b strings.Builder
|
|
b.Grow(len(base) + len(segments)*4)
|
|
b.WriteString(base)
|
|
for _, segment := range segments {
|
|
b.WriteByte('/')
|
|
b.WriteString(url.PathEscape(segment))
|
|
}
|
|
return b.String()
|
|
}
|