Documentation ¶
Overview ¶
Package normalpath provides functions similar to filepath.
A normalized path is a cleaned and to-slash'ed path. A validated path validates that a path is relative and does not jump context.
Index ¶
- func Base(path string) string
- func ByDir(paths ...string) map[string][]string
- func Components(path string) []string
- func ContainsPath(dirPath string, path string, pathType PathType) bool
- func Dir(path string) string
- func EqualsOrContainsPath(value string, path string, pathType PathType) bool
- func Ext(path string) string
- func Join(paths ...string) string
- func MapAllEqualOrContainingPaths(m map[string]struct{}, path string, pathType PathType) []string
- func MapHasEqualOrContainingPath(m map[string]struct{}, path string, pathType PathType) bool
- func Normalize(path string) string
- func NormalizeAndAbsolute(path string) (string, error)
- func NormalizeAndTransformForPathType(path string, pathType PathType) (string, error)
- func NormalizeAndValidate(path string) (string, error)
- func Rel(basepath string, targpath string) (string, error)
- func StripComponents(path string, countUint32 uint32) (string, bool)
- func Unnormalize(path string) string
- func ValidatePathComponent(component string) error
- func ValidatePathComponents(components ...string) error
- type Error
- type PathType
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func ByDir ¶
ByDir maps the paths into a map from directory via Dir to the original paths.
The paths for each value slice will be sorted.
The path is expected to be normalized.
func Components ¶
Components splits the path into it's components.
This calls filepath.Split repeatedly.
The path is expected to be normalized.
func ContainsPath ¶ added in v0.19.0
ContainsPath returns true if the dirPath contains the path.
The path and value are expected to be normalized and validated if Relative is used. The path and value are expected to be normalized and absolute if Absolute is used.
For a given dirPath:
- If path == PathType, dirPath does not contain the path.
- If dirPath == PathType, the dirPath contains the path.
- If dirPath is a directory that contains path, this returns true.
func EqualsOrContainsPath ¶ added in v0.19.0
EqualsOrContainsPath returns true if the value is equal to or contains the path.
The path and value are expected to be normalized and validated if Relative is used. The path and value are expected to be normalized and absolute if Absolute is used.
For a given value:
- If value == PathType, the value contains the path.
- If value == path, the value is equal to the path.
- If value is a directory that contains path, this returns true.
func Join ¶
Join is equivalent to filepath.Join.
Empty strings are ignored, Can return empty string.
Normalizes before returning otherwise.
func MapAllEqualOrContainingPaths ¶ added in v0.19.0
MapAllEqualOrContainingPaths returns the matching paths in the map.
The path and all keys in m are expected to be normalized and validated.
For a given key x:
- If x == PathType, the path always matches.
- If x == path, the path matches.
- If x is a directory that contains path, the path matches.
If the map is empty, returns nil.
func MapHasEqualOrContainingPath ¶ added in v0.19.0
MapHasEqualOrContainingPath returns true if the path matches any file or directory in the map.
The path and value are expected to be normalized and validated if Relative is used. The path and value are expected to be normalized and absolute if Absolute is used.
For a given key x:
- If x == PathType, the path always matches.
- If x == path, the path matches.
- If x is a directory that contains path, the path matches.
If the map is empty, returns false.
func Normalize ¶
Normalize normalizes the given path.
This calls filepath.Clean and filepath.ToSlash on the path. If the path is "" or ".", this returns ".".
func NormalizeAndAbsolute ¶ added in v0.19.0
NormalizeAndAbsolute normalizes the path and makes it absolute.
func NormalizeAndTransformForPathType ¶ added in v0.19.0
NormalizeAndTransformForPathType calls NormalizeAndValidate for relative paths, and NormalizeAndAbsolute for absolute paths.
func NormalizeAndValidate ¶
NormalizeAndValidate normalizes and validates the given path.
This calls Normalize on the path. Returns Error if the path is not relative or jumps context. This can be used to validate that paths are valid to use with Buckets. The error message is safe to pass to users.
func Rel ¶
Rel is equivalent to filepath.Rel.
Can return empty string, especially on error.
Normalizes before returning otherwise.
func StripComponents ¶ added in v0.19.0
StripComponents strips the specified number of components.
Path expected to be normalized. Returns false if the path does not have more than the specified number of components.
func Unnormalize ¶
Unnormalize unnormalizes the given path.
This calls filepath.FromSlash on the path. If the path is "", this returns "".
func ValidatePathComponent ¶ added in v0.25.0
ValidatePathComponent validates that the string is a valid component of a path, e.g. it can be Joined and form a valid path.
func ValidatePathComponents ¶ added in v0.25.0
ValidatePathComponents validates that all the strings are valid components of a path, e.g. they can be Joined and form a valid path.
Types ¶
type Error ¶
Error is a path error.
type PathType ¶ added in v0.19.0
type PathType int
PathType is a terminate type for path comparisons.