luaur_analyze_cli/methods/
file_navigation_context_navigation_context_trait.rs1use crate::records::file_navigation_context::FileNavigationContext;
6use alloc::rc::Rc;
7use alloc::string::String;
8use core::ffi::c_int;
9use core::ffi::c_void;
10use luaur_require::enums::config_behavior::ConfigBehavior;
11use luaur_require::enums::navigate_result::NavigateResult;
12use luaur_require::records::navigation_context::{ConfigStatus, NavigationContextTrait};
13use luaur_vm::functions::lua_setthreaddata::lua_setthreaddata;
14use luaur_vm::type_aliases::lua_state::lua_State;
15
16impl NavigationContextTrait for FileNavigationContext {
17 fn reset_to_requirer(&mut self) -> NavigateResult {
18 unsafe {
19 crate::methods::file_navigation_context_reset_to_requirer::file_navigation_context_reset_to_requirer(self)
20 }
21 }
22
23 fn jump_to_alias(&mut self, path: &str) -> NavigateResult {
24 unsafe {
25 crate::methods::file_navigation_context_jump_to_alias::file_navigation_context_jump_to_alias(
26 self,
27 &String::from(path),
28 )
29 }
30 }
31
32 fn to_parent(&mut self) -> NavigateResult {
33 unsafe {
34 crate::methods::file_navigation_context_to_parent::file_navigation_context_to_parent(
35 self,
36 )
37 }
38 }
39
40 fn to_child(&mut self, component: &str) -> NavigateResult {
41 unsafe {
42 crate::methods::file_navigation_context_to_child::file_navigation_context_to_child(
43 self,
44 &String::from(component),
45 )
46 }
47 }
48
49 fn get_config_status(&self) -> ConfigStatus {
50 unsafe {
51 crate::methods::file_navigation_context_get_config_status::file_navigation_context_get_config_status(self)
52 }
53 }
54
55 fn get_config_behavior(&self) -> ConfigBehavior {
56 unsafe {
57 crate::methods::file_navigation_context_get_config_behavior::file_navigation_context_get_config_behavior(self)
58 }
59 }
60
61 fn get_alias(&self, alias: &str) -> Option<String> {
62 unsafe {
63 crate::methods::file_navigation_context_get_alias::file_navigation_context_get_alias(
64 self,
65 &String::from(alias),
66 )
67 }
68 }
69
70 fn get_config(&self) -> Option<String> {
71 unsafe {
72 crate::methods::file_navigation_context_get_config::file_navigation_context_get_config(
73 self,
74 )
75 }
76 }
77
78 fn luau_config_init(&self) -> Option<Rc<dyn Fn(*mut lua_State)>> {
81 let info_ptr = self.interrupt_info.as_ref()?.as_ref()
82 as *const crate::records::luau_config_interrupt_info::LuauConfigInterruptInfo
83 as *mut c_void;
84 Some(Rc::new(move |l: *mut lua_State| unsafe {
85 lua_setthreaddata(l, info_ptr);
86 }))
87 }
88
89 fn luau_config_interrupt(
92 &self,
93 ) -> Option<unsafe extern "C-unwind" fn(l: *mut lua_State, gc: c_int)> {
94 self.interrupt_info.as_ref()?;
95 Some(crate::methods::cli_config_resolver_read_config_rec::luau_config_interrupt)
96 }
97}