feat: readd JSON to lib
This commit is contained in:
parent
fc705e7383
commit
926b9c17d8
@ -5,5 +5,6 @@ import me.topchetoeu.jscript.engine.values.ObjectValue;
|
||||
|
||||
public interface WrappersProvider {
|
||||
public ObjectValue getProto(Class<?> obj);
|
||||
public ObjectValue getNamespace(Class<?> obj);
|
||||
public FunctionValue getConstr(Class<?> obj);
|
||||
}
|
||||
|
@ -13,6 +13,7 @@ import me.topchetoeu.jscript.exceptions.EngineException;
|
||||
public class NativeWrapperProvider implements WrappersProvider {
|
||||
private final HashMap<Class<?>, FunctionValue> constructors = new HashMap<>();
|
||||
private final HashMap<Class<?>, ObjectValue> prototypes = new HashMap<>();
|
||||
private final HashMap<Class<?>, ObjectValue> namespaces = new HashMap<>();
|
||||
private final Environment env;
|
||||
|
||||
private static void applyMethods(Environment env, boolean member, ObjectValue target, Class<?> clazz) {
|
||||
@ -229,6 +230,10 @@ public class NativeWrapperProvider implements WrappersProvider {
|
||||
initType(clazz, constructors.get(clazz), prototypes.get(clazz));
|
||||
return prototypes.get(clazz);
|
||||
}
|
||||
public ObjectValue getNamespace(Class<?> clazz) {
|
||||
if (!namespaces.containsKey(clazz)) namespaces.put(clazz, makeNamespace(env, clazz));
|
||||
return namespaces.get(clazz);
|
||||
}
|
||||
public FunctionValue getConstr(Class<?> clazz) {
|
||||
initType(clazz, constructors.get(clazz), prototypes.get(clazz));
|
||||
return constructors.get(clazz);
|
||||
|
@ -9,7 +9,6 @@ import me.topchetoeu.jscript.engine.scope.GlobalScope;
|
||||
import me.topchetoeu.jscript.engine.values.FunctionValue;
|
||||
import me.topchetoeu.jscript.engine.values.Values;
|
||||
import me.topchetoeu.jscript.interop.Native;
|
||||
import me.topchetoeu.jscript.interop.NativeWrapperProvider;
|
||||
|
||||
public class Internals {
|
||||
private static final DataKey<HashMap<Integer, Thread>> THREADS = new DataKey<>();
|
||||
@ -82,10 +81,11 @@ public class Internals {
|
||||
|
||||
public void apply(Environment env) {
|
||||
var wp = env.wrappersProvider;
|
||||
var glob = env.global = new GlobalScope(NativeWrapperProvider.makeNamespace(env, Internals.class));
|
||||
var glob = env.global = new GlobalScope(wp.getNamespace(Internals.class));
|
||||
|
||||
glob.define(null, "Math", false, wp.getNamespace(MathLib.class));
|
||||
glob.define(null, "JSON", false, wp.getNamespace(JSONLib.class));
|
||||
|
||||
glob.define(null, "Math", false, NativeWrapperProvider.makeNamespace(env, MathLib.class));
|
||||
|
||||
glob.define(null, "Date", false, wp.getConstr(DateLib.class));
|
||||
glob.define(null, "Object", false, wp.getConstr(ObjectLib.class));
|
||||
glob.define(null, "Function", false, wp.getConstr(FunctionLib.class));
|
||||
|
Loading…
Reference in New Issue
Block a user