lib/fn_path_utils.rs
1// src/lib/fn_path_utils.rs
2use std::path::Path;
3
4/// Standaryzuje ścieżkę: zamienia ukośniki na uniksowe i usuwa windowsowy prefiks rozszerzony.
5pub fn standardize_path(path: &Path) -> String {
6 path.to_string_lossy()
7 .replace('\\', "/")
8 .trim_start_matches("//?/")
9 .to_string()
10}
11
12/// Formatuje ścieżkę względem podanego katalogu bazowego (np. obecnego katalogu roboczego).
13/// Jeśli ścieżka zawiera się w bazowej, zwraca ładny format `./relatywna/sciezka`.
14pub fn to_display_path(path: &Path, base_dir: &Path) -> String {
15 match path.strip_prefix(base_dir) {
16 Ok(rel_path) => format!("./{}", standardize_path(rel_path)),
17 Err(_) => standardize_path(path),
18 }
19}