mirror of
https://github.com/RGBCube/serenity
synced 2025-07-23 13:57:35 +00:00
LibJS: Re-implement console functions as wrappers around Console methods
Console methods are now Value(void) functions. JavaScript functions in the JavaScript ConsoleObject are now implemented as simple wrappers around Console methods. This will make it possible for LibJS users to easily override the default behaviour of JS console functions (even their return value!) once we add a way to override Console behaviour.
This commit is contained in:
parent
73bead5ae9
commit
30519c22f6
3 changed files with 49 additions and 51 deletions
|
@ -37,40 +37,46 @@ Console::Console(Interpreter& interpreter)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
void Console::debug(String text)
|
Value Console::debug()
|
||||||
{
|
{
|
||||||
dbg() << "debug: " << text;
|
dbg() << "debug: " << m_interpreter.join_arguments();
|
||||||
|
return js_undefined();
|
||||||
}
|
}
|
||||||
|
|
||||||
void Console::error(String text)
|
Value Console::error()
|
||||||
{
|
{
|
||||||
dbg() << "error: " << text;
|
dbg() << "error: " << m_interpreter.join_arguments();
|
||||||
|
return js_undefined();
|
||||||
}
|
}
|
||||||
|
|
||||||
void Console::info(String text)
|
Value Console::info()
|
||||||
{
|
{
|
||||||
dbg() << "info: " << text;
|
dbg() << "info: " << m_interpreter.join_arguments();
|
||||||
|
return js_undefined();
|
||||||
}
|
}
|
||||||
|
|
||||||
void Console::log(String text)
|
Value Console::log()
|
||||||
{
|
{
|
||||||
dbg() << "log: " << text;
|
dbg() << "log: " << m_interpreter.join_arguments();
|
||||||
|
return js_undefined();
|
||||||
}
|
}
|
||||||
|
|
||||||
void Console::warn(String text)
|
Value Console::warn()
|
||||||
{
|
{
|
||||||
dbg() << "warn: " << text;
|
dbg() << "warn: " << m_interpreter.join_arguments();
|
||||||
|
return js_undefined();
|
||||||
}
|
}
|
||||||
|
|
||||||
void Console::clear()
|
Value Console::clear()
|
||||||
{
|
{
|
||||||
dbg() << "clear:";
|
dbg() << "clear:";
|
||||||
|
return js_undefined();
|
||||||
}
|
}
|
||||||
|
|
||||||
void Console::trace(String title)
|
Value Console::trace()
|
||||||
{
|
{
|
||||||
StringBuilder message_text;
|
StringBuilder message_text;
|
||||||
message_text.append(title);
|
message_text.append(m_interpreter.join_arguments());
|
||||||
|
|
||||||
auto call_stack = m_interpreter.call_stack();
|
auto call_stack = m_interpreter.call_stack();
|
||||||
// -2 to skip the console.trace() call frame
|
// -2 to skip the console.trace() call frame
|
||||||
|
@ -83,31 +89,39 @@ void Console::trace(String title)
|
||||||
}
|
}
|
||||||
|
|
||||||
dbg() << "log: " << message_text.build();
|
dbg() << "log: " << message_text.build();
|
||||||
|
return js_undefined();
|
||||||
}
|
}
|
||||||
|
|
||||||
void Console::count(String label)
|
Value Console::count()
|
||||||
{
|
{
|
||||||
|
auto label = m_interpreter.argument_count() ? m_interpreter.argument(0).to_string() : "default";
|
||||||
|
|
||||||
auto counter_value = m_counters.get(label);
|
auto counter_value = m_counters.get(label);
|
||||||
if (!counter_value.has_value()) {
|
if (!counter_value.has_value()) {
|
||||||
dbg() << "log: " << label << ": 1";
|
dbg() << "log: " << label << ": 1";
|
||||||
m_counters.set(label, 1);
|
m_counters.set(label, 1);
|
||||||
return;
|
return js_undefined();
|
||||||
}
|
}
|
||||||
|
|
||||||
auto new_counter_value = counter_value.value() + 1;
|
auto new_counter_value = counter_value.value() + 1;
|
||||||
dbg() << "log: " << label << ": " << new_counter_value;
|
dbg() << "log: " << label << ": " << new_counter_value;
|
||||||
m_counters.set(label, new_counter_value);
|
m_counters.set(label, new_counter_value);
|
||||||
|
|
||||||
|
return js_undefined();
|
||||||
}
|
}
|
||||||
|
|
||||||
void Console::count_reset(String label)
|
Value Console::count_reset()
|
||||||
{
|
{
|
||||||
|
auto label = m_interpreter.argument_count() ? m_interpreter.argument(0).to_string() : "default";
|
||||||
|
|
||||||
if (m_counters.contains(label)) {
|
if (m_counters.contains(label)) {
|
||||||
dbg() << "warn: \"" << label << "\" doesn't have a count";
|
dbg() << "warn: \"" << label << "\" doesn't have a count";
|
||||||
return;
|
return js_undefined();
|
||||||
}
|
}
|
||||||
|
|
||||||
m_counters.remove(label);
|
m_counters.remove(label);
|
||||||
dbg() << "log: " << label << ": 0";
|
dbg() << "log: " << label << ": 0";
|
||||||
|
return js_undefined();
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -44,18 +44,18 @@ public:
|
||||||
|
|
||||||
HashMap<String, unsigned>& counters() { return m_counters; }
|
HashMap<String, unsigned>& counters() { return m_counters; }
|
||||||
|
|
||||||
void debug(String text);
|
Value debug();
|
||||||
void error(String text);
|
Value error();
|
||||||
void info(String text);
|
Value info();
|
||||||
void log(String text);
|
Value log();
|
||||||
void warn(String text);
|
Value warn();
|
||||||
|
|
||||||
void clear();
|
Value clear();
|
||||||
|
|
||||||
void trace(String title);
|
Value trace();
|
||||||
|
|
||||||
void count(String label = "default");
|
Value count();
|
||||||
void count_reset(String label = "default");
|
Value count_reset();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
Interpreter& m_interpreter;
|
Interpreter& m_interpreter;
|
||||||
|
|
|
@ -28,7 +28,6 @@
|
||||||
|
|
||||||
#include <AK/FlyString.h>
|
#include <AK/FlyString.h>
|
||||||
#include <AK/Function.h>
|
#include <AK/Function.h>
|
||||||
#include <AK/StringBuilder.h>
|
|
||||||
#include <LibJS/Console.h>
|
#include <LibJS/Console.h>
|
||||||
#include <LibJS/Interpreter.h>
|
#include <LibJS/Interpreter.h>
|
||||||
#include <LibJS/Runtime/ConsoleObject.h>
|
#include <LibJS/Runtime/ConsoleObject.h>
|
||||||
|
@ -56,62 +55,47 @@ ConsoleObject::~ConsoleObject()
|
||||||
|
|
||||||
Value ConsoleObject::log(Interpreter& interpreter)
|
Value ConsoleObject::log(Interpreter& interpreter)
|
||||||
{
|
{
|
||||||
interpreter.console().log(interpreter.join_arguments());
|
return interpreter.console().log();
|
||||||
return js_undefined();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
Value ConsoleObject::debug(Interpreter& interpreter)
|
Value ConsoleObject::debug(Interpreter& interpreter)
|
||||||
{
|
{
|
||||||
interpreter.console().debug(interpreter.join_arguments());
|
return interpreter.console().debug();
|
||||||
return js_undefined();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
Value ConsoleObject::info(Interpreter& interpreter)
|
Value ConsoleObject::info(Interpreter& interpreter)
|
||||||
{
|
{
|
||||||
interpreter.console().info(interpreter.join_arguments());
|
return interpreter.console().info();
|
||||||
return js_undefined();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
Value ConsoleObject::warn(Interpreter& interpreter)
|
Value ConsoleObject::warn(Interpreter& interpreter)
|
||||||
{
|
{
|
||||||
interpreter.console().warn(interpreter.join_arguments());
|
return interpreter.console().warn();
|
||||||
return js_undefined();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
Value ConsoleObject::error(Interpreter& interpreter)
|
Value ConsoleObject::error(Interpreter& interpreter)
|
||||||
{
|
{
|
||||||
interpreter.console().error(interpreter.join_arguments());
|
return interpreter.console().error();
|
||||||
return js_undefined();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
Value ConsoleObject::trace(Interpreter& interpreter)
|
Value ConsoleObject::trace(Interpreter& interpreter)
|
||||||
{
|
{
|
||||||
interpreter.console().trace(interpreter.join_arguments());
|
return interpreter.console().trace();
|
||||||
return js_undefined();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
Value ConsoleObject::count(Interpreter& interpreter)
|
Value ConsoleObject::count(Interpreter& interpreter)
|
||||||
{
|
{
|
||||||
if (interpreter.argument_count())
|
return interpreter.console().count();
|
||||||
interpreter.console().count(interpreter.argument(0).to_string());
|
|
||||||
else
|
|
||||||
interpreter.console().count();
|
|
||||||
return js_undefined();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
Value ConsoleObject::count_reset(Interpreter& interpreter)
|
Value ConsoleObject::count_reset(Interpreter& interpreter)
|
||||||
{
|
{
|
||||||
if (interpreter.argument_count())
|
return interpreter.console().count_reset();
|
||||||
interpreter.console().count_reset(interpreter.argument(0).to_string());
|
|
||||||
else
|
|
||||||
interpreter.console().count_reset();
|
|
||||||
return js_undefined();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
Value ConsoleObject::clear(Interpreter& interpreter)
|
Value ConsoleObject::clear(Interpreter& interpreter)
|
||||||
{
|
{
|
||||||
interpreter.console().clear();
|
return interpreter.console().clear();
|
||||||
return js_undefined();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue