@cbrewster/luna
Node.js bindings to Lua.
import { Lua, LuaTable } from '@cbrewster/luna';
(async () => {
const lua = new Lua();
console.log(await lua.doString("x = 1"));
console.log(await lua.doString("return x"));
try {
await lua.doString("this is a syntax error");
} catch (e) {
console.log(e);
}
console.log(await lua.doString("return 1 + 2"));
console.log(await lua.doString(`return "abc"`));
const table = await lua.doString(`return {key = "value", foo = "bar"}`);
if (table instanceof LuaTable) {
table.forEach((key, val) => {
console.log(`key: ${key} val: ${val}`);
});
}
const selfReference = await lua.doString("x = {} \n x.self = x \n return x");
if (selfReference instanceof LuaTable) {
selfReference.forEach((key, val) => {
console.log(`key: ${key} val: ${val}`);
if (val?.toString() === selfReference.toString()) {
console.log("we have a cycle!");
console.log("Table: ", selfReference.toString());
}
});
}
lua.close();
})()