1
0
mirror of https://github.com/vlang/v.git synced 2023-08-10 21:13:21 +03:00
v/vlib/filepath/filepath.v

58 lines
1.2 KiB
V
Raw Normal View History

2019-11-01 19:29:51 +03:00
module filepath
2019-12-20 00:29:37 +03:00
import (
2019-11-01 19:29:51 +03:00
os
)
2019-12-20 00:29:37 +03:00
2019-12-23 13:09:22 +03:00
// ext returns the extension in the file `path`.
2019-11-01 19:29:51 +03:00
pub fn ext(path string) string {
2019-12-23 13:09:22 +03:00
pos := path.last_index('.') or {
return ''
2019-11-01 19:29:51 +03:00
}
2019-12-23 13:09:22 +03:00
return path[pos..]
2019-11-01 19:29:51 +03:00
}
2019-12-23 13:09:22 +03:00
// is_abs returns true if `path` is absolute.
2019-11-01 19:29:51 +03:00
pub fn is_abs(path string) bool {
$if windows {
return path[0] == `/` || // incase we're in MingGW bash
2019-12-20 00:29:37 +03:00
(path[0].is_letter() && path[1] == `:`)
2019-11-01 19:29:51 +03:00
}
return path[0] == `/`
}
2019-12-23 13:09:22 +03:00
// join returns path as string from string parameter(s).
2019-11-01 19:29:51 +03:00
pub fn join(base string, dirs ...string) string {
mut result := []string
result << base.trim_right('\\/')
2019-12-20 00:29:37 +03:00
for d in dirs {
result << d
}
return result.join(os.path_separator)
2019-11-01 19:29:51 +03:00
}
2019-12-20 00:29:37 +03:00
2019-12-23 13:09:22 +03:00
// dir returns all but the last element of path, typically the path's directory.
pub fn dir(path string) string {
if path == '.' {
return os.getwd()
}
pos := path.last_index(os.path_separator) or {
return '.'
}
return path[..pos]
}
// basedir returns a directory name from path
pub fn basedir(path string) string {
pos := path.last_index(os.path_separator) or {
return path
}
// NB: *without* terminating /
return path[..pos]
}
// filename returns a file name from path
pub fn filename(path string) string {
return path.all_after(os.path_separator)
}