devalang_core/core/utils/
path.rs

1use 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}