1#![allow(clippy::cargo_common_metadata)]
2
3#[cfg(feature = "mlua")]
4use mlua::prelude::*;
5
6#[cfg(feature = "mlua")]
7use lune_utils::TableBuilder;
8
9pub mod datatypes;
10pub mod document;
11pub mod instance;
12pub mod reflection;
13
14#[cfg(feature = "mlua")]
15pub(crate) mod exports;
16pub(crate) mod shared;
17
18#[cfg(feature = "mlua")]
19use exports::export;
20
21#[cfg(feature = "mlua")]
22fn create_all_exports(lua: Lua) -> LuaResult<Vec<(&'static str, LuaValue)>> {
23 use datatypes::types::*;
24 use instance::Instance;
25 Ok(vec![
26 export::<Axes>(lua.clone())?,
28 export::<BrickColor>(lua.clone())?,
29 export::<CFrame>(lua.clone())?,
30 export::<Color3>(lua.clone())?,
31 export::<ColorSequence>(lua.clone())?,
32 export::<ColorSequenceKeypoint>(lua.clone())?,
33 export::<Content>(lua.clone())?,
34 export::<Faces>(lua.clone())?,
35 export::<Font>(lua.clone())?,
36 export::<NumberRange>(lua.clone())?,
37 export::<NumberSequence>(lua.clone())?,
38 export::<NumberSequenceKeypoint>(lua.clone())?,
39 export::<PhysicalProperties>(lua.clone())?,
40 export::<Ray>(lua.clone())?,
41 export::<Rect>(lua.clone())?,
42 export::<UDim>(lua.clone())?,
43 export::<UDim2>(lua.clone())?,
44 export::<UniqueId>(lua.clone())?,
45 export::<Region3>(lua.clone())?,
46 export::<Region3int16>(lua.clone())?,
47 export::<Vector2>(lua.clone())?,
48 export::<Vector2int16>(lua.clone())?,
49 export::<Vector3>(lua.clone())?,
50 export::<Vector3int16>(lua.clone())?,
51 export::<Instance>(lua.clone())?,
53 ("Enum", Enums.into_lua(&lua)?),
55 ])
56}
57
58#[cfg(feature = "mlua")]
69pub fn module(lua: Lua) -> LuaResult<LuaTable> {
70 let exports = create_all_exports(lua.clone())?;
76 TableBuilder::new(lua)?
77 .with_values(exports)?
78 .build_readonly()
79}