Permissions and filesystems #9
@ -21,21 +21,21 @@ public abstract class FunctionValue extends ObjectValue {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected Object getField(Context ctx, Object key) {
|
protected Object getField(Context ctx, Object key) {
|
||||||
if (key.equals("name")) return name;
|
if ("name".equals(key)) return name;
|
||||||
if (key.equals("length")) return length;
|
if ("length".equals(key)) return length;
|
||||||
return super.getField(ctx, key);
|
return super.getField(ctx, key);
|
||||||
}
|
}
|
||||||
@Override
|
@Override
|
||||||
protected boolean setField(Context ctx, Object key, Object val) {
|
protected boolean setField(Context ctx, Object key, Object val) {
|
||||||
if (key.equals("name")) name = Values.toString(ctx, val);
|
if ("name".equals(key)) name = Values.toString(ctx, val);
|
||||||
else if (key.equals("length")) length = (int)Values.toNumber(ctx, val);
|
else if ("length".equals(key)) length = (int)Values.toNumber(ctx, val);
|
||||||
else return super.setField(ctx, key, val);
|
else return super.setField(ctx, key, val);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
@Override
|
@Override
|
||||||
protected boolean hasField(Context ctx, Object key) {
|
protected boolean hasField(Context ctx, Object key) {
|
||||||
if (key.equals("name")) return true;
|
if ("name".equals(key)) return true;
|
||||||
if (key.equals("length")) return true;
|
if ("length".equals(key)) return true;
|
||||||
return super.hasField(ctx, key);
|
return super.hasField(ctx, key);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -262,7 +262,7 @@ public class ObjectValue {
|
|||||||
values.put(key, val);
|
values.put(key, val);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
else if (key.equals("__proto__")) return setPrototype(ctx, val);
|
else if ("__proto__".equals(key)) return setPrototype(ctx, val);
|
||||||
else if (nonWritableSet.contains(key)) return false;
|
else if (nonWritableSet.contains(key)) return false;
|
||||||
else return setField(ctx, key, val);
|
else return setField(ctx, key, val);
|
||||||
}
|
}
|
||||||
@ -273,7 +273,7 @@ public class ObjectValue {
|
|||||||
public final boolean hasMember(Context ctx, Object key, boolean own) {
|
public final boolean hasMember(Context ctx, Object key, boolean own) {
|
||||||
key = Values.normalize(ctx, key);
|
key = Values.normalize(ctx, key);
|
||||||
|
|
||||||
if (key != null && key.equals("__proto__")) return true;
|
if (key != null && "__proto__".equals(key)) return true;
|
||||||
if (hasField(ctx, key)) return true;
|
if (hasField(ctx, key)) return true;
|
||||||
if (properties.containsKey(key)) return true;
|
if (properties.containsKey(key)) return true;
|
||||||
if (own) return false;
|
if (own) return false;
|
||||||
|
@ -105,7 +105,7 @@ public class Values {
|
|||||||
}
|
}
|
||||||
public static boolean toBoolean(Object obj) {
|
public static boolean toBoolean(Object obj) {
|
||||||
if (obj == NULL || obj == null) return false;
|
if (obj == NULL || obj == null) return false;
|
||||||
if (obj instanceof Number && number(obj) == 0) return false;
|
if (obj instanceof Number && (number(obj) == 0 || Double.isNaN(number(obj)))) return false;
|
||||||
if (obj instanceof String && ((String)obj).equals("")) return false;
|
if (obj instanceof String && ((String)obj).equals("")) return false;
|
||||||
if (obj instanceof Boolean) return (Boolean)obj;
|
if (obj instanceof Boolean) return (Boolean)obj;
|
||||||
return true;
|
return true;
|
||||||
@ -272,15 +272,15 @@ public class Values {
|
|||||||
|
|
||||||
var proto = getPrototype(ctx, obj);
|
var proto = getPrototype(ctx, obj);
|
||||||
|
|
||||||
if (proto == null) return key.equals("__proto__") ? NULL : null;
|
if (proto == null) return "__proto__".equals(key) ? NULL : null;
|
||||||
else if (key != null && key.equals("__proto__")) return proto;
|
else if (key != null && "__proto__".equals(key)) return proto;
|
||||||
else return proto.getMember(ctx, key, obj);
|
else return proto.getMember(ctx, key, obj);
|
||||||
}
|
}
|
||||||
public static boolean setMember(Context ctx, Object obj, Object key, Object val) {
|
public static boolean setMember(Context ctx, Object obj, Object key, Object val) {
|
||||||
obj = normalize(ctx, obj); key = normalize(ctx, key); val = normalize(ctx, val);
|
obj = normalize(ctx, obj); key = normalize(ctx, key); val = normalize(ctx, val);
|
||||||
if (obj == null) throw EngineException.ofType("Tried to access member of undefined.");
|
if (obj == null) throw EngineException.ofType("Tried to access member of undefined.");
|
||||||
if (obj == NULL) throw EngineException.ofType("Tried to access member of null.");
|
if (obj == NULL) throw EngineException.ofType("Tried to access member of null.");
|
||||||
if (key.equals("__proto__")) return setPrototype(ctx, obj, val);
|
if (key != null && "__proto__".equals(key)) return setPrototype(ctx, obj, val);
|
||||||
if (isObject(obj)) return object(obj).setMember(ctx, key, val, false);
|
if (isObject(obj)) return object(obj).setMember(ctx, key, val, false);
|
||||||
|
|
||||||
var proto = getPrototype(ctx, obj);
|
var proto = getPrototype(ctx, obj);
|
||||||
@ -290,7 +290,7 @@ public class Values {
|
|||||||
if (obj == null || obj == NULL) return false;
|
if (obj == null || obj == NULL) return false;
|
||||||
obj = normalize(ctx, obj); key = normalize(ctx, key);
|
obj = normalize(ctx, obj); key = normalize(ctx, key);
|
||||||
|
|
||||||
if (key.equals("__proto__")) return true;
|
if ("__proto__".equals(key)) return true;
|
||||||
if (isObject(obj)) return object(obj).hasMember(ctx, key, own);
|
if (isObject(obj)) return object(obj).hasMember(ctx, key, own);
|
||||||
|
|
||||||
if (obj instanceof String && key instanceof Number) {
|
if (obj instanceof String && key instanceof Number) {
|
||||||
|
Loading…
Reference in New Issue
Block a user