github.com/3JoB/vfs@v1.0.0/path.go (about) 1 package vfs 2 3 import ( 4 "strings" 5 ) 6 7 // SplitPath splits the given path in segments: 8 // 9 // "/" -> []string{""} 10 // "./file" -> []string{".", "file"} 11 // "file" -> []string{".", "file"} 12 // "/usr/src/linux/" -> []string{"", "usr", "src", "linux"} 13 // 14 // The returned slice of path segments consists of one more more segments. 15 func SplitPath(path string, sep string) []string { 16 path = strings.TrimSpace(path) 17 path = strings.TrimSuffix(path, sep) 18 if path == "" { // was "/" 19 return []string{""} 20 } 21 if path == "." { 22 return []string{"."} 23 } 24 25 if len(path) > 0 && !strings.HasPrefix(path, sep) && !strings.HasPrefix(path, "."+sep) { 26 path = "./" + path 27 } 28 parts := strings.Split(path, sep) 29 30 return parts 31 }