Add support for source mappings #10
@ -37,21 +37,6 @@ public class JSON {
|
|||||||
if (val instanceof Number) return JSONElement.number(((Number)val).doubleValue());
|
if (val instanceof Number) return JSONElement.number(((Number)val).doubleValue());
|
||||||
if (val instanceof String) return JSONElement.string((String)val);
|
if (val instanceof String) return JSONElement.string((String)val);
|
||||||
if (val == Values.NULL) return JSONElement.NULL;
|
if (val == Values.NULL) return JSONElement.NULL;
|
||||||
if (val instanceof ObjectValue) {
|
|
||||||
if (prev.contains(val)) throw new EngineException("Circular dependency in JSON.");
|
|
||||||
prev.add(val);
|
|
||||||
|
|
||||||
var res = new JSONMap();
|
|
||||||
|
|
||||||
for (var el : ((ObjectValue)val).keys(false)) {
|
|
||||||
var jsonEl = fromJs(ctx, ((ObjectValue)val).getMember(ctx, el), prev);
|
|
||||||
if (jsonEl == null) continue;
|
|
||||||
if (el instanceof String || el instanceof Number) res.put(el.toString(), jsonEl);
|
|
||||||
}
|
|
||||||
|
|
||||||
prev.remove(val);
|
|
||||||
return JSONElement.of(res);
|
|
||||||
}
|
|
||||||
if (val instanceof ArrayValue) {
|
if (val instanceof ArrayValue) {
|
||||||
if (prev.contains(val)) throw new EngineException("Circular dependency in JSON.");
|
if (prev.contains(val)) throw new EngineException("Circular dependency in JSON.");
|
||||||
prev.add(val);
|
prev.add(val);
|
||||||
@ -67,6 +52,21 @@ public class JSON {
|
|||||||
prev.remove(val);
|
prev.remove(val);
|
||||||
return JSONElement.of(res);
|
return JSONElement.of(res);
|
||||||
}
|
}
|
||||||
|
if (val instanceof ObjectValue) {
|
||||||
|
if (prev.contains(val)) throw new EngineException("Circular dependency in JSON.");
|
||||||
|
prev.add(val);
|
||||||
|
|
||||||
|
var res = new JSONMap();
|
||||||
|
|
||||||
|
for (var el : ((ObjectValue)val).keys(false)) {
|
||||||
|
var jsonEl = fromJs(ctx, ((ObjectValue)val).getMember(ctx, el), prev);
|
||||||
|
if (jsonEl == null) continue;
|
||||||
|
if (el instanceof String || el instanceof Number) res.put(el.toString(), jsonEl);
|
||||||
|
}
|
||||||
|
|
||||||
|
prev.remove(val);
|
||||||
|
return JSONElement.of(res);
|
||||||
|
}
|
||||||
if (val == null) return null;
|
if (val == null) return null;
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user