Files
LuaScript/src/main/java/org/openautonomousconnection/luascript/events/JavaToLua.java

49 lines
1.4 KiB
Java
Raw Normal View History

2026-01-16 21:47:04 +01:00
package org.openautonomousconnection.luascript.events;
import org.luaj.vm2.LuaTable;
import org.luaj.vm2.LuaValue;
import java.util.List;
import java.util.Map;
/**
* Coerces common Java values into Lua values.
*/
public final class JavaToLua {
2026-01-16 21:53:46 +01:00
private JavaToLua() {
}
2026-01-16 21:47:04 +01:00
public static LuaValue coerce(Object v) {
if (v == null) return LuaValue.NIL;
if (v instanceof LuaValue lv) return lv;
if (v instanceof String s) return LuaValue.valueOf(s);
if (v instanceof Boolean b) return LuaValue.valueOf(b);
if (v instanceof Integer i) return LuaValue.valueOf(i);
if (v instanceof Long l) return LuaValue.valueOf(l);
if (v instanceof Float f) return LuaValue.valueOf(f);
if (v instanceof Double d) return LuaValue.valueOf(d);
if (v instanceof Map<?, ?> m) {
LuaTable t = new LuaTable();
for (Map.Entry<?, ?> e : m.entrySet()) {
Object k = e.getKey();
if (k == null) continue;
t.set(String.valueOf(k), coerce(e.getValue()));
}
return t;
}
if (v instanceof List<?> list) {
LuaTable t = new LuaTable();
int i = 1;
for (Object o : list) {
t.set(i++, coerce(o));
}
return t;
}
return LuaValue.valueOf(String.valueOf(v));
}
}