first commit
This commit is contained in:
@@ -0,0 +1,47 @@
|
||||
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 {
|
||||
|
||||
private JavaToLua() { }
|
||||
|
||||
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));
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user