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  }