summaryrefslogtreecommitdiff
path: root/Libraries/LibJS/Runtime
diff options
context:
space:
mode:
Diffstat (limited to 'Libraries/LibJS/Runtime')
-rw-r--r--Libraries/LibJS/Runtime/JSONObject.cpp35
-rw-r--r--Libraries/LibJS/Runtime/JSONObject.h8
2 files changed, 22 insertions, 21 deletions
diff --git a/Libraries/LibJS/Runtime/JSONObject.cpp b/Libraries/LibJS/Runtime/JSONObject.cpp
index fd2f666105..a0c00773f6 100644
--- a/Libraries/LibJS/Runtime/JSONObject.cpp
+++ b/Libraries/LibJS/Runtime/JSONObject.cpp
@@ -24,9 +24,9 @@
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
-#include <AK/JsonParser.h>
-#include <AK/JsonObject.h>
#include <AK/JsonArray.h>
+#include <AK/JsonObject.h>
+#include <AK/JsonParser.h>
#include <AK/StringBuilder.h>
#include <LibJS/Interpreter.h>
#include <LibJS/Runtime/Array.h>
@@ -82,7 +82,7 @@ JS_DEFINE_NATIVE_FUNCTION(JSONObject::stringify)
if (value_object.is_string_object() || value_object.is_number_object()) {
item = value_object.value_of().to_string(interpreter);
if (interpreter.exception())
- return { };
+ return {};
}
}
if (!item.is_null() && !list.contains_slow(item)) {
@@ -201,8 +201,7 @@ String JSONObject::serialize_json_object(Interpreter& interpreter, StringifyStat
"%s:%s%s",
quote_json_string(key.to_string()).characters(),
state.gap.is_empty() ? "" : " ",
- serialized_property_string.characters()
- ));
+ serialized_property_string.characters()));
}
};
@@ -222,7 +221,7 @@ String JSONObject::serialize_json_object(Interpreter& interpreter, StringifyStat
if (interpreter.exception())
return {};
}
- for (auto&[key, metadata] : object.shape().property_table_ordered()) {
+ for (auto& [key, metadata] : object.shape().property_table_ordered()) {
if (!metadata.attributes.is_enumerable())
continue;
process_property(key);
@@ -382,7 +381,7 @@ JS_DEFINE_NATIVE_FUNCTION(JSONObject::parse)
interpreter.throw_exception<SyntaxError>(ErrorType::JsonMalformed);
return {};
}
- Value result = parse_json_value(interpreter, json.value());
+ Value result = parse_json_value(interpreter, global_object, json.value());
if (reviver.is_function()) {
auto* holder_object = Object::create_empty(interpreter, global_object);
holder_object->define_property(String::empty(), result);
@@ -393,12 +392,12 @@ JS_DEFINE_NATIVE_FUNCTION(JSONObject::parse)
return result;
}
-Value JSONObject::parse_json_value(Interpreter& interpreter, const JsonValue& value)
+Value JSONObject::parse_json_value(Interpreter& interpreter, GlobalObject& global_object, const JsonValue& value)
{
if (value.is_object())
- return Value(parse_json_object(interpreter, value.as_object()));
+ return Value(parse_json_object(interpreter, global_object, value.as_object()));
if (value.is_array())
- return Value(parse_json_array(interpreter, value.as_array()));
+ return Value(parse_json_array(interpreter, global_object, value.as_array()));
if (value.is_null())
return js_null();
#if !defined(KERNEL)
@@ -414,21 +413,21 @@ Value JSONObject::parse_json_value(Interpreter& interpreter, const JsonValue& va
ASSERT_NOT_REACHED();
}
-Object* JSONObject::parse_json_object(Interpreter& interpreter, const JsonObject& json_object)
+Object* JSONObject::parse_json_object(Interpreter& interpreter, GlobalObject& global_object, const JsonObject& json_object)
{
- auto* object = Object::create_empty(interpreter, interpreter.global_object());
- json_object.for_each_member([&object, &interpreter](String key, JsonValue value) {
- object->put(key, parse_json_value(interpreter, value));
+ auto* object = Object::create_empty(interpreter, global_object);
+ json_object.for_each_member([&](auto& key, auto& value) {
+ object->put(key, parse_json_value(interpreter, global_object, value));
});
return object;
}
-Array* JSONObject::parse_json_array(Interpreter& interpreter, const JsonArray& json_array)
+Array* JSONObject::parse_json_array(Interpreter& interpreter, GlobalObject& global_object, const JsonArray& json_array)
{
- auto* array = Array::create(interpreter.global_object());
+ auto* array = Array::create(global_object);
size_t index = 0;
- json_array.for_each([&array, &interpreter, &index](JsonValue value) {
- array->put(index++, parse_json_value(interpreter, value));
+ json_array.for_each([&](auto& value) {
+ array->put(index++, parse_json_value(interpreter, global_object, value));
});
return array;
}
diff --git a/Libraries/LibJS/Runtime/JSONObject.h b/Libraries/LibJS/Runtime/JSONObject.h
index 7fc71c7f9d..7d097793a9 100644
--- a/Libraries/LibJS/Runtime/JSONObject.h
+++ b/Libraries/LibJS/Runtime/JSONObject.h
@@ -26,6 +26,8 @@
#pragma once
+#include <LibJS/Runtime/Object.h>
+
namespace JS {
class JSONObject final : public Object {
@@ -51,9 +53,9 @@ private:
static String quote_json_string(String);
// Parse helpers
- static Object* parse_json_object(Interpreter&, const JsonObject&);
- static Array* parse_json_array(Interpreter&, const JsonArray&);
- static Value parse_json_value(Interpreter&, const JsonValue&);
+ static Object* parse_json_object(Interpreter&, GlobalObject&, const JsonObject&);
+ static Array* parse_json_array(Interpreter&, GlobalObject&, const JsonArray&);
+ static Value parse_json_value(Interpreter&, GlobalObject&, const JsonValue&);
static Value internalize_json_property(Interpreter&, Object* holder, const PropertyName& name, Function& reviver);
JS_DECLARE_NATIVE_FUNCTION(stringify);