diff --git a/Libraries/LibJS/Print.cpp b/Libraries/LibJS/Print.cpp index b2f9975b4ef..1306d0c8d95 100644 --- a/Libraries/LibJS/Print.cpp +++ b/Libraries/LibJS/Print.cpp @@ -1038,7 +1038,7 @@ ErrorOr print_value(JS::PrintContext& print_context, JS::Value value, Hash else if (value.is_undefined()) TRY(js_out(print_context, "\033[34;1m")); - if (value.is_string()) + if (value.is_string() && !print_context.disable_string_quotes) TRY(js_out(print_context, "\"")); else if (value.is_negative_zero()) TRY(js_out(print_context, "-")); @@ -1049,7 +1049,7 @@ ErrorOr print_value(JS::PrintContext& print_context, JS::Value value, Hash else TRY(js_out(print_context, "{}", contents)); - if (value.is_string()) + if (value.is_string() && !print_context.disable_string_quotes) TRY(js_out(print_context, "\"")); TRY(js_out(print_context, "\033[0m")); return {}; diff --git a/Libraries/LibJS/Print.h b/Libraries/LibJS/Print.h index 68861e81e14..995a5f798de 100644 --- a/Libraries/LibJS/Print.h +++ b/Libraries/LibJS/Print.h @@ -17,6 +17,7 @@ struct PrintContext { JS::VM& vm; Stream& stream; bool strip_ansi { false }; + bool disable_string_quotes { false }; }; ErrorOr print(JS::Value value, PrintContext&); diff --git a/Utilities/js.cpp b/Utilities/js.cpp index 2e5cdbc685a..57efbc802a2 100644 --- a/Utilities/js.cpp +++ b/Utilities/js.cpp @@ -85,6 +85,7 @@ static bool s_dump_ast = false; static bool s_as_module = false; static bool s_print_last_result = false; static bool s_strip_ansi = false; +static bool s_disable_string_quotes = false; static bool s_disable_source_location_hints = false; #if !defined(AK_OS_WINDOWS) static RefPtr s_editor; @@ -96,7 +97,7 @@ static int s_exit_code = 0; static ErrorOr print(JS::Value value, Stream& stream) { - JS::PrintContext print_context { .vm = *g_vm, .stream = stream, .strip_ansi = s_strip_ansi }; + JS::PrintContext print_context { .vm = *g_vm, .stream = stream, .strip_ansi = s_strip_ansi, .disable_string_quotes = s_disable_string_quotes }; return JS::print(value, print_context); } @@ -788,6 +789,7 @@ ErrorOr serenity_main(Main::Arguments arguments) args_parser.add_option(s_disable_source_location_hints, "Disable source location hints", "disable-source-location-hints", 'h'); args_parser.add_option(gc_on_every_allocation, "GC on every allocation", "gc-on-every-allocation", 'g'); args_parser.add_option(disable_syntax_highlight, "Disable live syntax highlighting", "no-syntax-highlight", 's'); + args_parser.add_option(s_disable_string_quotes, "Disable quotes around strings", "disable-string-quotes", {}); args_parser.add_option(disable_debug_printing, "Disable debug output", "disable-debug-output", {}); args_parser.add_option(evaluate_script, "Evaluate argument as a script", "evaluate", 'c', "script"); args_parser.add_option(use_test262_global, "Use test262 global ($262)", "use-test262-global", {});