luaur_cli_lib/methods/
vfs_navigator_to_parent.rs1use crate::enums::navigation_status::NavigationStatus;
2use crate::functions::normalize_path::normalize_path;
3use crate::records::vfs_navigator::VfsNavigator;
4use luaur_common::macros::luau_assert::LUAU_ASSERT;
5
6impl VfsNavigator {
7 pub fn to_parent(&mut self) -> NavigationStatus {
8 if self.absolute_module_path == "/" {
9 return NavigationStatus::NotFound;
10 }
11
12 let num_slashes = self
13 .absolute_module_path
14 .bytes()
15 .filter(|c| *c == b'/')
16 .count();
17 LUAU_ASSERT!(num_slashes > 0);
18
19 if num_slashes == 1 {
20 return NavigationStatus::NotFound;
21 }
22
23 self.module_path = normalize_path(&(self.module_path.clone() + "/.."));
24 self.absolute_module_path = normalize_path(&(self.absolute_module_path.clone() + "/.."));
25
26 let status = self.update_real_paths();
27 if status == NavigationStatus::Ambiguous {
28 NavigationStatus::Success
29 } else {
30 status
31 }
32 }
33}