first commit

This commit is contained in:
yangshangbo
2025-04-10 18:14:01 +08:00
commit 8b18de9693
26 changed files with 270858 additions and 0 deletions
+78
View File
@@ -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
}
})
}