devalang_core/core/utils/
path.rs1use std::path::{ Path, PathBuf };
2
3pub fn find_entry_file(entry: &str) -> Option<String> {
4 let path = Path::new(entry);
5
6 if path.is_file() {
7 return Some(normalize_path(entry));
8 }
9
10 if path.is_dir() {
11 let candidate = path.join("index.deva");
12 if candidate.exists() {
13 return Some(normalize_path(&candidate));
14 }
15 }
16
17 None
18}
19
20pub fn normalize_path<P: AsRef<Path>>(path: P) -> String {
21 let path_buf = PathBuf::from(path.as_ref());
22 path_buf.components().collect::<PathBuf>().to_string_lossy().replace('\\', "/")
23}
24
25pub fn resolve_relative_path(base: &str, import: &str) -> String {
26 let base_path = Path::new(base)
27 .parent()
28 .unwrap_or_else(|| Path::new(""));
29 let full_path = base_path.join(import);
30 full_path.components().collect::<PathBuf>().to_string_lossy().replace("\\", "/")
31}