first commit
This commit is contained in:
@@ -0,0 +1,78 @@
|
||||
module pathlib
|
||||
|
||||
import regex
|
||||
import os { File }
|
||||
|
||||
pub struct Path {
|
||||
pub:
|
||||
path string = os.abs_path ('.')
|
||||
}
|
||||
|
||||
pub fn Path.pwd() Path {
|
||||
pwd := os.abs_path ('./')
|
||||
return Path {
|
||||
path: pwd
|
||||
}
|
||||
}
|
||||
pub fn (p Path) exists() bool {
|
||||
return os.exists(p.path)
|
||||
}
|
||||
|
||||
pub fn (p Path) absolute() Path {
|
||||
return Path{
|
||||
path: os.abs_path(p.path)
|
||||
}
|
||||
}
|
||||
|
||||
pub fn (p Path) is_dir() bool {
|
||||
return os.is_dir(p.path)
|
||||
}
|
||||
|
||||
pub fn (p Path) is_file() bool {
|
||||
return os.is_file(p.path)
|
||||
}
|
||||
|
||||
pub fn (p Path) walk() []Path {
|
||||
entries := os.ls(p.path) or { [] }
|
||||
mut result := [] Path {}
|
||||
if !p.is_dir() {
|
||||
return result
|
||||
}
|
||||
for entry in entries {
|
||||
entry_path := Path{
|
||||
path:entry
|
||||
}
|
||||
current_path := p / entry_path
|
||||
result << current_path
|
||||
if current_path.is_dir(){
|
||||
result << current_path.walk()
|
||||
}
|
||||
}
|
||||
return result
|
||||
}
|
||||
|
||||
|
||||
pub fn (p Path) str() string {
|
||||
mut p_path := p.path
|
||||
mut re := regex.regex_opt(r'^[/\\]+') or { panic(error)}
|
||||
p_path = re.replace(p_path,'/')
|
||||
return "Path(${p_path})"
|
||||
}
|
||||
|
||||
pub fn (p Path) / (n Path) Path {
|
||||
mut n_path := n.path
|
||||
mut re := regex.regex_opt(r'[/\\]+') or { panic(error)}
|
||||
n_path = re.replace(n_path,'')
|
||||
return Path{
|
||||
path: p.path + '\\' + n_path
|
||||
}
|
||||
}
|
||||
|
||||
pub fn (p Path) glob(pattern string) []Path {
|
||||
match_results := os.glob(pattern) or { ["abc"] }
|
||||
return match_results.map(fn (path string) Path {
|
||||
return Path {
|
||||
path: path
|
||||
}
|
||||
})
|
||||
}
|
||||
Reference in New Issue
Block a user