diff --git a/Libraries/LibJS/Console.cpp b/Libraries/LibJS/Console.cpp index 49947f0394..1a62a453eb 100644 --- a/Libraries/LibJS/Console.cpp +++ b/Libraries/LibJS/Console.cpp @@ -24,7 +24,9 @@ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ +#include #include +#include namespace JS { @@ -33,4 +35,29 @@ Console::Console(Interpreter& interpreter) { } +unsigned Console::count(String label) +{ + auto counter_value = m_counters.get(label); + if (!counter_value.has_value()) { + printf("%s: 1\n", label.characters()); + m_counters.set(label, 1); + return 1; + } + + auto new_counter_value = counter_value.value() + 1; + printf("%s: %d\n", label.characters(), new_counter_value); + m_counters.set(label, new_counter_value); + return new_counter_value; +} + +bool Console::count_reset(String label) +{ + if (!m_counters.contains(label)) + return false; + + m_counters.remove(label); + printf("%s: 0\n", label.characters()); + return true; +} + } diff --git a/Libraries/LibJS/Console.h b/Libraries/LibJS/Console.h index 09f61d695b..3d4ef371d5 100644 --- a/Libraries/LibJS/Console.h +++ b/Libraries/LibJS/Console.h @@ -43,6 +43,9 @@ public: HashMap& counters() { return m_counters; } + unsigned count(String label = "default"); + bool count_reset(String label = "default"); + private: Interpreter& m_interpreter; diff --git a/Libraries/LibJS/Runtime/ConsoleObject.cpp b/Libraries/LibJS/Runtime/ConsoleObject.cpp index 3f01bf3449..c4d2be4fa3 100644 --- a/Libraries/LibJS/Runtime/ConsoleObject.cpp +++ b/Libraries/LibJS/Runtime/ConsoleObject.cpp @@ -28,7 +28,7 @@ #include #include -#include +#include #include #include #include @@ -115,40 +115,19 @@ Value ConsoleObject::trace(Interpreter& interpreter) Value ConsoleObject::count(Interpreter& interpreter) { - String counter_name; - if (!interpreter.argument_count()) - counter_name = "default"; + if (interpreter.argument_count()) + interpreter.console().count(interpreter.argument(0).to_string()); else - counter_name = interpreter.argument(0).to_string(); - - auto& counters = interpreter.console().counters(); - auto counter_value = counters.get(counter_name); - - if (counter_value.has_value()) { - printf("%s: %d\n", counter_name.characters(), counter_value.value() + 1); - counters.set(counter_name, counter_value.value() + 1); - } else { - printf("%s: 1\n", counter_name.characters()); - counters.set(counter_name, 1); - } + interpreter.console().count(); return js_undefined(); } Value ConsoleObject::count_reset(Interpreter& interpreter) { - String counter_name; - if (!interpreter.argument_count()) - counter_name = "default"; + if (interpreter.argument_count()) + interpreter.console().count_reset(interpreter.argument(0).to_string()); else - counter_name = interpreter.argument(0).to_string(); - - auto& counters = interpreter.console().counters(); - - if (counters.contains(counter_name)) { - counters.remove(counter_name); - printf("%s: 0\n", counter_name.characters()); - } - + interpreter.console().count_reset(); return js_undefined(); }