summaryrefslogtreecommitdiff
path: root/Libraries/LibJS/Runtime
diff options
context:
space:
mode:
Diffstat (limited to 'Libraries/LibJS/Runtime')
-rw-r--r--Libraries/LibJS/Runtime/ConsoleObject.cpp44
-rw-r--r--Libraries/LibJS/Runtime/ConsoleObject.h1
2 files changed, 20 insertions, 25 deletions
diff --git a/Libraries/LibJS/Runtime/ConsoleObject.cpp b/Libraries/LibJS/Runtime/ConsoleObject.cpp
index c4d2be4fa3..b6a5eb81ad 100644
--- a/Libraries/LibJS/Runtime/ConsoleObject.cpp
+++ b/Libraries/LibJS/Runtime/ConsoleObject.cpp
@@ -28,22 +28,23 @@
#include <AK/FlyString.h>
#include <AK/Function.h>
+#include <AK/StringBuilder.h>
#include <LibJS/Console.h>
#include <LibJS/Interpreter.h>
#include <LibJS/Runtime/ConsoleObject.h>
#include <LibJS/Runtime/GlobalObject.h>
-#include <stdio.h>
namespace JS {
-static void print_args(Interpreter& interpreter)
+static String join_args(Interpreter& interpreter)
{
+ StringBuilder joined_arguments;
for (size_t i = 0; i < interpreter.argument_count(); ++i) {
- printf("%s", interpreter.argument(i).to_string().characters());
+ joined_arguments.append(interpreter.argument(i).to_string().characters());
if (i != interpreter.argument_count() - 1)
- putchar(' ');
+ joined_arguments.append(' ');
}
- putchar('\n');
+ return joined_arguments.build();
}
ConsoleObject::ConsoleObject()
@@ -57,6 +58,7 @@ ConsoleObject::ConsoleObject()
put_native_function("trace", trace);
put_native_function("count", count);
put_native_function("countReset", count_reset);
+ put_native_function("clear", clear);
}
ConsoleObject::~ConsoleObject()
@@ -65,51 +67,37 @@ ConsoleObject::~ConsoleObject()
Value ConsoleObject::log(Interpreter& interpreter)
{
- print_args(interpreter);
+ interpreter.console().log(join_args(interpreter));
return js_undefined();
}
Value ConsoleObject::debug(Interpreter& interpreter)
{
- printf("\033[36;1m");
- print_args(interpreter);
- printf("\033[0m");
+ interpreter.console().debug(join_args(interpreter));
return js_undefined();
}
Value ConsoleObject::info(Interpreter& interpreter)
{
- print_args(interpreter);
+ interpreter.console().info(join_args(interpreter));
return js_undefined();
}
Value ConsoleObject::warn(Interpreter& interpreter)
{
- printf("\033[33;1m");
- print_args(interpreter);
- printf("\033[0m");
+ interpreter.console().warn(join_args(interpreter));
return js_undefined();
}
Value ConsoleObject::error(Interpreter& interpreter)
{
- printf("\033[31;1m");
- print_args(interpreter);
- printf("\033[0m");
+ interpreter.console().error(join_args(interpreter));
return js_undefined();
}
Value ConsoleObject::trace(Interpreter& interpreter)
{
- print_args(interpreter);
- auto call_stack = interpreter.call_stack();
- // -2 to skip the console.trace() call frame
- for (ssize_t i = call_stack.size() - 2; i >= 0; --i) {
- auto function_name = call_stack[i].function_name;
- if (String(function_name).is_empty())
- function_name = "<anonymous>";
- printf("%s\n", function_name.characters());
- }
+ interpreter.console().trace(join_args(interpreter));
return js_undefined();
}
@@ -131,4 +119,10 @@ Value ConsoleObject::count_reset(Interpreter& interpreter)
return js_undefined();
}
+Value ConsoleObject::clear(Interpreter& interpreter)
+{
+ interpreter.console().clear();
+ return js_undefined();
+}
+
}
diff --git a/Libraries/LibJS/Runtime/ConsoleObject.h b/Libraries/LibJS/Runtime/ConsoleObject.h
index eff99da621..eb5fedf84e 100644
--- a/Libraries/LibJS/Runtime/ConsoleObject.h
+++ b/Libraries/LibJS/Runtime/ConsoleObject.h
@@ -46,6 +46,7 @@ private:
static Value trace(Interpreter&);
static Value count(Interpreter&);
static Value count_reset(Interpreter&);
+ static Value clear(Interpreter&);
};
}