Skip to main content

pawkit_lua/
lib.rs

1#![feature(decl_macro)]
2#![cfg(not(target_arch = "wasm32"))]
3
4use mlua::prelude::*;
5
6mod fs;
7mod input;
8mod logger;
9mod net;
10
11macro lua_enum {
12    ($fname:ident {$($name:ident $(= $value:expr)?),* $(,)?}) => {
13        #[allow(unused_assignments)]
14        fn $fname(lua: &Lua) -> LuaResult<LuaTable> {
15            let table = lua.create_table()?;
16
17            let mut index = 0;
18
19            $(
20                $(index = $value;)?
21                table.set(stringify!($name), index)?;
22                index += 1;
23            )*
24
25            return Ok(table);
26        }
27    },
28
29    ($fname:ident : str {$($name:ident),* $(,)?}) => {
30        fn $fname(lua: &Lua) -> LuaResult<LuaTable> {
31            let table = lua.create_table()?;
32
33            $(
34                table.set(stringify!($name), stringify!($name))?;
35            )*
36
37            return Ok(table);
38        }
39    }
40}
41
42#[mlua::lua_module]
43pub fn pawkit(lua: &Lua) -> LuaResult<LuaTable> {
44    let exports = lua.create_table()?;
45
46    exports.set("logger", logger::init(lua)?)?;
47    exports.set("net", net::init(lua)?)?;
48    // exports.set("input", input::init(lua)?)?;
49    exports.set("fs", fs::init(lua)?)?;
50
51    return Ok(exports);
52}