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("fs", fs::init(lua)?)?;
50
51 return Ok(exports);
52}