os: fix file_ext function (#14566)
parent
f971da9a93
commit
e201665e92
14
vlib/os/os.v
14
vlib/os/os.v
|
@ -173,8 +173,20 @@ pub fn is_dir_empty(path string) bool {
|
||||||
|
|
||||||
// file_ext will return the part after the last occurence of `.` in `path`.
|
// file_ext will return the part after the last occurence of `.` in `path`.
|
||||||
// The `.` is included.
|
// The `.` is included.
|
||||||
|
// Examples:
|
||||||
|
// ```v
|
||||||
|
// assert os.file_ext('file.v') == '.v'
|
||||||
|
// assert os.file_ext('.ignore_me') == ''
|
||||||
|
// assert os.file_ext('.') == ''
|
||||||
|
// ```
|
||||||
pub fn file_ext(path string) string {
|
pub fn file_ext(path string) string {
|
||||||
pos := path.last_index('.') or { return '' }
|
if path.len < 3 {
|
||||||
|
return empty_str
|
||||||
|
}
|
||||||
|
pos := path.last_index(dot_str) or { return empty_str }
|
||||||
|
if pos + 1 >= path.len || pos == 0 {
|
||||||
|
return empty_str
|
||||||
|
}
|
||||||
return path[pos..]
|
return path[pos..]
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -585,9 +585,19 @@ fn test_is_executable_writable_readable() ? {
|
||||||
os.rm(file_name) or { panic(err) }
|
os.rm(file_name) or { panic(err) }
|
||||||
}
|
}
|
||||||
|
|
||||||
fn test_ext() {
|
fn test_file_ext() {
|
||||||
assert os.file_ext('file.v') == '.v'
|
assert os.file_ext('file.v') == '.v'
|
||||||
|
assert os.file_ext('file.js.v') == '.v'
|
||||||
|
assert os.file_ext('file.ext1.ext2.ext3') == '.ext3'
|
||||||
|
assert os.file_ext('.ignore_me.v') == '.v'
|
||||||
assert os.file_ext('file') == ''
|
assert os.file_ext('file') == ''
|
||||||
|
assert os.file_ext('.git') == ''
|
||||||
|
assert os.file_ext('file.') == ''
|
||||||
|
assert os.file_ext('.') == ''
|
||||||
|
assert os.file_ext('..') == ''
|
||||||
|
assert os.file_ext('file...') == ''
|
||||||
|
assert os.file_ext('.file.') == ''
|
||||||
|
assert os.file_ext('..file..') == ''
|
||||||
}
|
}
|
||||||
|
|
||||||
fn test_join() {
|
fn test_join() {
|
||||||
|
|
Loading…
Reference in New Issue